# @actuallab/rpc 中文文档

规范地址：https://npmcn.com/package/%40actuallab/rpc/

版本：15\.1\.24
npm 元数据更新时间：2026-11-07T11:39:13.418Z
中文译文更新时间：2026-11-06T11:49:20.709Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40actuallab/rpc
原文对照：https://npmcn.com/package/%40actuallab/rpc/?lang=original
项目主页：https://github.com/ActualLab/Fusion#readme
源码仓库：https://github.com/ActualLab/Fusion

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.4 MB，8 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：3 个
- 首次发布：2026-02-18T09:33:04.032Z
- 最新版本发布：2026-11-07T11:39:13.011Z
- 近 30 天下载量：3358（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：54（近 12 个月 54 个）

## 中文简介

实际Lab TypeScript 库 RPC 框架

## 安装

```sh
npm install @actuallab/rpc
```

也可以使用：`pnpm add @actuallab/rpc`、`yarn add @actuallab/rpc`、`bun add @actuallab/rpc`

## README

# @ actuallab/ rpc

[![npm](https://img.shields.io/npm/v/@actuallab/rpc)](https://www.npmjs.com/package/@actuallab/rpc) [![Documentation](https://img.shields.io/badge/Documentation-6B5B95)](https://fusion.actuallab.net/PartTS-Rpc) [![License](https://img.shields.io/npm/l/@actuallab/rpc)](https://github.com/ActualLab/Fusion/blob/master/LICENSE)

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

单枪匹马地用它做平地RPC. 对于使用服务器驱动无效的计算调用, 使用 [`@actuallab/fusion-rpc`](https://www.npmjs.com/package/@actuallab/fusion-rpc),扩展此选项 软件包 `RpcHub`。 。 。 .

## 安装

```bash
npm install @actuallab/rpc
```

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

## 快开始

```ts
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>`, (中文(简体) ), `toRpcStream` | `AsyncIterable<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` 参考文献](https://fusion.actuallab.net/PartTS-Rpc) ——完整的API表格,再连接证明,接线协议
-   [类型脚本端口概览](https://fusion.actuallab.net/PartTS)
-   [实际Lab。 Rpc 数据](https://fusion.actuallab.net/PartR) 财务报告和审定财务报表 [Rpc 结构](https://fusion.actuallab.net/PartR-RpcStream) ——概念,以.NET术语表示

## 许可证

麻省理工学院——见 [自由主义](https://github.com/ActualLab/Fusion/blob/master/LICENSE)。 。 。 .

## 常见问题

### @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 和提交记录判断。

