@devicechain/client

中文文档
1.4.0发布于 2026/11/12Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 5112

设备Chan客户端 SDK – 双层认证,输入了GraphQL操作,并在客户端电线上订阅了graphql-ws.

中文使用文档
文档目录7 节
  1. 请求去的地方
  2. 查询和变异
  3. 认证
  4. 订阅
  5. 还有这里
  6. 兼容性
  7. 许可证

@devicechain/ 客户端

DuiceChain 客户端 SDK:一个小的、框架不可知的核心,用于与一个 浏览器中的设备 Chain 实例 。 已输入图QL fetch现场直播 订阅结束 graphql-ws,并一个符号连接 您的应用程序填写.

这里没有阿波罗 没有商店 也没有反应 它拥有电线,你的应用程序 拥有州和UI.

npm install @devicechain/client graphql

graphql 你几乎肯定已经拥有了,因为 sDK接受的打入文档来自 GraphQL 代码生成器 .

请求去的地方

每个设备Chain功能区服务于自己的GraphQL端点和SDK 给他们打电话 相对于页面,作为 /api/<area>/graphql这是 包 约 a DeviceChain 入侵服务: SPA at /后方每个区域 /api/<area>。 。 。 .

因此,一个来自同一来源的应用程序需要配置到 都说吧 从别处送达的应用程序需要dev-server代理或倒置 转发的代理 /api/<area>/... 以实例表示的形状—— 设备 Chain 控制台本身 vite.config.ts 用户.

查询和变异

import { gql } from '@devicechain/client';
import { DeviceListDocument } from './gql/graphql'; // your generated documents

const { devices } = await gql('device-management', DeviceListDocument, {
  first: 25,
});

该地区是第一个论点,它是一个被检查的工会—— AREAS 导出 作为实时运行的数组,而不仅仅是一个类型,所以可以列举.

从文档中推断出结果和可变类型. 如果手术 不需要变量,参数是可选的.

失败的到来 GraphQLRequestError 带有 HTTP 状态和 图QL 错误列表 . isForbiddenError(err) 一个分类值 特别的,因为"你可能不会这样做" 是一个不同的事情 显示一个 用户比“ 请求没有到达” .

认证

设备钱使用两个符号: a 租户出入证 普通工作,还有 身份标志 例如,有范围的管理终点。 你登记一个获取器 每个区域, SDK 在每个请求中附带一个正确的区域—— 检测到管理区域 从地区名称, 所以一个新的行政呼叫 不能悄悄地骑租户标志.

import { setAuthTokenGetter, setIdentityTokenGetter } from '@devicechain/client';

setAuthTokenGetter(async () => store.accessToken); // refresh inside if near expiry
setIdentityTokenGetter(async () => store.identityToken);

登录和刷新没有符号的呼叫; 通过 { anonymous: true } 这些.

createSessionTokens 提供更新的逻辑。 你告诉它在哪里 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}象征的一对还活着 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}怎么叫新鲜点 之前不久它就恢复了活力 访问令牌过期, 在同时通话者之间共享一个飞行中刷新 (新鲜的令牌旋转),并降低会后到达的结果: 已替换 :

import { createSessionTokens, gql, setAuthTokenGetter } from '@devicechain/client';

const session = createSessionTokens({
  read: () => store.pair, // { accessToken, refreshToken } | null
  apply: (pair) => { store.pair = pair; },
  refresh: async (refreshToken) =>
    (await gql('user-management', REFRESH, { refreshToken }, { anonymous: true })).refresh,
  onEnd: (err) => showSignIn(err), // refused, lapsed, or offline past expiry
});
setAuthTokenGetter(session.getAccessToken);
const stop = session.startAutoRefresh(); // optional: refresh on a timer, not only on demand

服务器拒绝, 如无效或被撤销的刷新符号, 结束 立即开会。 瞬间故障不会:没有反应,5xx,或429. 虽然 访问令牌仍然有效, 呼叫者不断得到它 startAutoRefresh 以紧张的后退重试。 届会只在 访问符实际过期 .

decodeToken, (中文(简体) ), isExpired 财务报告和审定财务报表 hasAuthority 用于读取索赔的导出 客户端。 它们解码,不验证——服务器是权威.

订阅

import { subscribe, disposeSubscriptions } from '@devicechain/client';

const unsubscribe = subscribe(
  'event-management',
  MeasurementStreamDocument,
  { deviceToken: 'sensor-01' },
  {
    next: (data) => render(data),
    error: (err) => report(err),
    connected: (wasRetry) => setLive(true, wasRetry),
    closed: () => setLive(false),
  },
);

// on sign-out, drop every area socket so a stale token's connection cannot linger
disposeSubscriptions();

每个区域共用一个套接字,并在订阅时重复使用. connected 财务报告和审定财务报表 closed 是连接级的信号,让用户界面告诉“连接” 除了"离线"之外,只有数据库是无法区分的.

套接字只包含订阅;通过HTTP发送查询和突变. 这个 服务器用代码关闭它 4401 当它打开了过期的进入符时. subscribe 处理关闭的您 : 它重新连接一次 与新解决的 符号,再次订阅,并报告重新连接为 connected(true){\fn黑体\fs20\shad2\2ah82\3ah20\4ah33\fscx95\3ch592001\be1}所以重新点燃 任何你一定不能错过 当你看到它.

还有这里

  • 基图分辨率 (单位:千美元)resolveBasemap, (中文(简体) ), renderableBasemap)——客户一半 因此,绘制地图的每个表面都会解决 地表覆盖 租户默认的方式相同.
  • 口罩 (单位:千美元)generateToken, (中文(简体) ), conformsToMask, (中文(简体) ), parseMask(......) —— 设备脚本词汇,在往返前验证客户端侧.

兼容性

无害环境管理,仅供捆绑者溶液使用(网络、网络包装、滚动、建设)。 这个 所公布的申报使用无延展说明,在 类型脚本 bundler 模块分辨率和 没有 下级 node16编号 :nodenext。 。 。 .

许可证

阿帕奇2.0 (英语). 见 自由主义。 。 。 .

版本与发布记录

@devicechain/client 共发布 48 个版本,首次发布于 2026/09/02;过去 12 个月发布了 48 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.4.0latest2026/11/12今天
1.4.0-rc.2next2026/11/11今天
1.4.0-rc.12026/11/111 天前
1.3.02026/11/092 天前
1.3.0-rc.12026/11/092 天前
1.2.02026/11/083 天前

关于 @devicechain/client 的常见问题

@devicechain/client 是什么?

设备Chan客户端 SDK – 双层认证,输入了GraphQL操作,并在客户端电线上订阅了graphql-ws.

如何安装 @devicechain/client?

在项目目录运行 npm install @devicechain/client,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:graphql(^16.0.0 || ^17.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@devicechain/client 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@devicechain/client 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@devicechain/client 可以商用吗?

@devicechain/client 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@devicechain/client 的下载量有多少?

根据 npm 官方下载统计,@devicechain/client 在 2026/10/12 – 2026/11/10 这 30 天内被下载 5,112 次,日均约 170 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@devicechain/client 还在维护吗?

最新版本 1.4.0 发布于 2026/11/12(今天);至今共发布 48 个版本,其中过去 12 个月发布了 48 个;首次发布于 2026/09/02。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。