@ actuallab/ rpc
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>, (中文(简体) ), 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参考文献 ——完整的API表格,再连接证明,接线协议- 类型脚本端口概览
- 实际Lab。 Rpc 数据 财务报告和审定财务报表 Rpc 结构 ——概念,以.NET术语表示
许可证
麻省理工学院——见 自由主义。 。 。 .