tsrpc
、tsrpc-browser
、tsrpc-miniapp
和 tsrpc-cli
迎来例行更新。
新特性
1. 心跳检测
心跳检测是长连接服务常见的机制,TSRPC 3.3.0 版本增加了对这一特性的支持,使用方式如下:
客户端发起心跳检测
无需修改 Server 端,通过 Client 配置项 heartbeat
即可配置心跳检测行为,例如:
重要
心跳检测仅对长连接(如 WebSocket)有效。
let client = new WsClient(serviceProto, {
// ...
heartbeat: {
// 两次心跳检测的间隔时间(毫秒)
interval: 8000,
// 发出心跳检测包后,多长时间未收到回复视为超时(毫秒),超时将使连接断开
timeout: 5000
}
});
服务端断开未正常发送心跳包的连接
Server 端不会主动发送心跳包,但是可以配置 heartbeatWaitTime
来实现 断开超时未收到心跳包的连接,如下:
let server = new WsServer(serviceProto, {
// 超过 10 秒未收到心跳包,则断开该连接
// 注意,这个值需要大于客户端的 heartbeat.interval(2倍以上为宜)
heartbeatWaitTime: 10000
});
2. Logger 新特性
Server 和 Client 均可以通过 logger
来自定义日志行为。
在 TSRPC 3.3.0 中,增加了一项名为 logLevel
的配置,它可以和 logger
搭配使用,例如:
let server = new HttpServer(serviceProto, {
logger: myLogger,
// 只打印 warn error 日志
logLevel: 'warn'
})
let client = new WsClient(serviceProto, {
logger: myLogger,
// 打印所有日志(默认)
logLevel: 'debug',
})
此外,在开发长连接服务时,Message 消息收发可能会非常频繁。
你可能希望在控制台隐藏 [SendMsg]
和 [RecvMsg]
日志,
可以通过 3.3.0 中增加的新配置项 logMsg
实现。
let client = new WsClient(serviceProto, {
// 不打印 [SendMsg] 和 [RecvMsg] 日志
logMsg: false
})
优化和问题修复
npm run dev
期间,会触发serviceProto
重新生成的监视目录由src/shared/protocols
改为src
,以解决协议依赖修改但协议未重新生成的问题;也可以通过配置项TsrpcConfig.proto.watch
来自定义。npm run dev
启动前自动执行npm run sync
(之前是只执行link
)- 修复因移动项目目录导致的 Symlink 关联错误
- HttpServer 在 JSON 模式下,增加响应头以解决在开发者工具中中文乱码的问题。
升级方式
所有更新均向后兼容,您可以根据项目需要选择升级与否。
本次更新涉及以下 NPM 包:
tsrpc@3.3.0
tsrpc-browser@3.3.0
tsrpc-miniapp@3.3.0
tsrpc-cli@2.4.1
升级方式:
后端
npm i tsrpc@latest
npm i tsrpc-cli@latest -D
前端
npm i tsrpc-browser@latest
npm i tsrpc-miniapp@latest