@actuallab/rpc

中文文档
15.1.24发布于 2026/11/07MITTypeScriptESM + CJS构建来源已验证近 30 天下载 3358

实际Lab TypeScript 库 RPC 框架

中文使用文档
文档目录6 节
  1. 安装
  2. 快开始
  3. API 表面
  4. 页:1
  5. 文档
  6. 许可证

@ actuallab/ rpc

npm Documentation License

TypeScript 客户端( 和 Node.js 主机) ActualLab.Rpc – 后面的WebSocket RPC层 组合。它和 .NET 使用相同的线程 执行,并处理连接管理、序列化、流线、系统调用,以及 自动重联.

单枪匹马地用它做平地RPC. 对于使用服务器驱动无效的计算调用, 使用 @actuallab/fusion-rpc,扩展此选项 软件包 RpcHub。 。 。 .

安装

npm install @actuallab/rpc

无害环境管理首先采用CJS制;船舶自用 .d.ts在浏览器和节点js中工作(提供a) ws 通过 WebSocket peer.webSocketFactory) (中文(简体) ).

快开始

import { RpcHub, RpcClientPeer, defineRpcService, RpcType } from '@actuallab/rpc';

// The name must match the .NET interface name exactly.
const SimpleServiceDef = defineRpcService('ISimpleService', {
    Greet: { args: [''] },                              // (message) → string
    Counter: { args: [], returns: RpcType.stream },     // () → RpcStream<number>
    Ping: { args: [''], returns: RpcType.noWait },      // fire-and-forget
});

const hub = new RpcHub();
const peer = new RpcClientPeer(hub, 'ws://localhost:5005/rpc/ws'); // auto-starts
hub.addPeer(peer);   // registers it, so hub.close() shuts it down too
const client = hub.addClient<ISimpleService>(peer, SimpleServiceDef);

console.log(await client.Greet('World'));

for await (const i of await client.Counter()) {
    if (i > 10) break;   // sends AckEnd to the server
}

client.Ping('hello');    // returns void, dropped while disconnected

args 仅读取其 length ——这些值是记录签名的占位符. 服务也可与 @rpcService 编号 : @rpcMethod 两者均使用的装饰器 客户端和服务器侧执行.

API 表面

API 密码说明
RpcHub同行、注册服务、共享重联延迟器, addClient 编号 : addService 编号 : close
RpcClientPeer与握手、缓冲和指数回放重联的客户端连接(100毫秒-10秒)
RpcServerPeer, (中文(简体) ), RpcWebSocketConnection托管方: 接受进入的 WebSocket
defineRpcService, (中文(简体) ), rpcService, (中文(简体) ), rpcMethod, (中文(简体) ), RpcType服务定义
RpcStream<T>, (中文(简体) ), toRpcStreamAsyncIterable<T> 具有 ack 后压并恢复后连接的流
RpcPeerStateMonitor, (中文(简体) ), RpcPeerStateKind连接状态状态机器 JustConnected 编号 : JustDisconnected 优等时期, 对 UI
RpcCallTimeouts, (中文(简体) ), RpcLimits接通超时和接通寿命周期计时(保持动态,握手,
genericErrorFilter当主机为 RPC 服务时, 将输出错误信息替换为通用错误信息

页:1

  • 重接是自动的. 延迟者住在中心,由所有客户端共享; hub.reconnectDelayer.cancelDelays() 强制立即重试( 用于“ 重新连接 ” ) 按钮)。 连接在连接后15秒内下降,不会重置后退.
  • 相继相接. json5np (默认)或信件包(msgpack6 编号 : msgpack6c,以 页:1 ?f= URL密钥. 不支持内存包和多态有效载荷——它们响亮地失败了.
  • 节点.js. 构造对等点 mustStart = false设置 peer.webSocketFactory,然后调用 peer.start()。 。 。 .
  • 警卫. 给RPC服务 https编号 :wss: 需要重新连接证明 crypto.subtle,这是 在不安全的浏览器背景中找不到 。 如果您的节点主机 服务 RPC,考虑 hub.systemCallSender.errorFilter = genericErrorFilter 因此处理器例外文本(路径, 连接字符串)无法联系到呼叫者.

文档

许可证

麻省理工学院——见 自由主义。 。 。 .

版本与发布记录

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

版本发布日期距今
15.1.24latest2026/11/07今天
15.1.222026/11/07今天
15.1.152026/11/07今天
15.1.112026/11/07今天
15.1.62026/11/07今天
15.0.212026/10/2414 天前

关于 @actuallab/rpc 的常见问题

@actuallab/rpc 是什么?

实际Lab TypeScript 库 RPC 框架

如何安装 @actuallab/rpc?

在项目目录运行 npm install @actuallab/rpc,或使用 pnpm add / yarn add / bun add。

@actuallab/rpc 支持 TypeScript 吗?

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

@actuallab/rpc 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@actuallab/rpc 可以商用吗?

@actuallab/rpc 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@actuallab/rpc 的下载量有多少?

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

@actuallab/rpc 还在维护吗?

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