birpc 使用教程
birpc Message-based two-way remote procedure call. 项目地址: https://gitcode.com/gh_mirrors/bi/birpc
1. 项目介绍
birpc 是一个基于消息传递的双向远程过程调用(RPC)库。它适用于 WebSocket 和 Workers 通信,支持 TypeScript,并具有类型安全的特点。birpc 设计简洁,易于使用,且不依赖任何外部库,大小仅为约 0.5KB。
2. 项目快速启动
以下是基于 WebSocket 的 birpc 快速启动示例:
客户端代码
import { ServerFunctions } from './types';
const ws = new WebSocket('ws://url');
const clientFunctions: ServerFunctions = {
hey(name: string) {
return `Hey ${name} from client`;
}
};
const rpc = createBirpc<ServerFunctions>(clientFunctions, {
post: data => ws.send(data),
on: data => ws.on('message', data),
serialize: v => JSON.stringify(v),
deserialize: v => JSON.parse(v),
});
await rpc.hi('Client'); // 输出: Hi Client from server
服务端代码
import { ClientFunctions } from './types';
import { WebSocketServer } from 'ws';
const serverFunctions: ClientFunctions = {
hi(name: string) {
return `Hi ${name} from server`;
}
};
const wss = new WebSocketServer();
wss.on('connection', ws => {
const rpc = createBirpc<ClientFunctions>(serverFunctions, {
post: data => ws.send(data),
on: fn => ws.on('message', fn),
serialize: v => JSON.stringify(v),
deserialize: v => JSON.parse(v),
});
await rpc.hey('Server'); // 输出: Hey Server from client
});
确保你有正确处理 WebSocket 的连接和消息传递。
3. 应用案例和最佳实践
使用 WebSocket
当使用 WebSocket 时,你需要传递自定义的序列化和反序列化函数。如果预期会有循环引用,推荐使用 structured-clone-es
作为序列化器。
使用 MessageChannel
MessageChannel
会自动处理消息的序列化,并支持开箱即用的循环引用。
4. 典型生态项目
目前没有特定的生态项目直接依赖于 birpc,但是任何需要 WebSocket 或消息通道进行通信的项目都可以考虑使用 birpc 来简化远程过程调用。你可以查看 GitHub 上的相关 issues 和 pull requests 来了解社区的讨论和使用情况。
以上是 birpc 的基本使用教程,希望能够帮助你快速上手这个项目。
birpc Message-based two-way remote procedure call. 项目地址: https://gitcode.com/gh_mirrors/bi/birpc
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考