使用 nodejs 开发的 socket 通讯,目前支持 tcp 协议。基本功能:断线重连、心跳检测、路由、远程调用、超时监听等。
支持客户端监听服务端的通知、事件。使用路由方式在客户端监听。
支持远程调用。服务端注册方法,客户端调用方法即可。
- tcp 的 server 和 client 互相发送消息
- 消息格式处理,目前支持 json
- 心跳。客户端发起,5 秒一次。10 秒没有响应就断开连接。
- 连接。客户端和服务端建立连接之后发送校验 token,token 验证成功则发送成功 ack。
可以查看test
目录下的文件
import NClient from "../src/NClient";
const ct = new NClient();
ct.listen(18000);
const sleep = (time: number) => new Promise((resolve) => setTimeout(() => resolve(), time));
ct.use("test", async function (data) {
console.log("1", data);
await sleep(3000);
console.log("1_end");
return data + 1;
});
ct.use("test", async function (data) {
console.log("2", data);
await sleep(2000);
console.log("2_end");
return data + 1;
});
cfg
。服务端的配置,保存了使用到的配置内容。listen(port = 4000, host?: string)
。启动服务端的监听,传入监听的端口,可选的 hostname。notice(uid: string, group: string, data: any)
。主动通知除 uid 之外该房间的所有人。sendTo(uid: string, command: string, data?: any)
。给 uid 对应的客户端发送消息。sendAll(command: string, data?: any)
。给所有人发送消息。regMethod(method: string, fn: any)
。注册远程方法。
cfg
。配置信息。info
。当前状态信息listen(port = 3000, host?: string)
。启动监听服务。retry
。重新连接服务端。send(command, data, group?)
。发送消息。sendGroup(data:any)
。给房间群组发送消息。setGroup(group: string)
。设置房间/群组的名称onNotice(fn: any)
。当收到群体通知的时候。use(routeName:string, fn:any)
。路由事件。call(method: string)
。远程调用方法
- 客户端/服务端创建
- TCP 协议连接和断开
- 心跳检测
- 路由
- 组/房间标记
- 双队列服务,标记准备中和准备好的客户端
- 客户端发送消息到客户端,发送房间消息
- 远程调用。服务端注册方法,客户端调用