tsrpc、tsrpc-browser、tsrpc-miniapp 和 tsrpc-cli 迎来例行更新。
新特性
1. 内置 HTTPS 和 WSS 支持
在之前的版本中,TSRPC 仅支持 http:// 和 ws:// 方式连接,如果需要 HTTPS / WSS,只能依赖前置代理实现(例如 nginx 或云厂商的负载均衡)。
3.4.0 中,我们给 HttpServer 和 WsServer 新增了 https 和 wss 的选项,你可以不依赖前置代理进行 HTTPS / WSS 的配置,例如:
let server = new HttpServer(serviceProto, {
// 启用 HTTPS
https: {
key: fs.readFileSync('cert/xxx.key'),
cert: fs.readFileSync('cert/xxx.crt')
},
// ...
})
let server = new WsServer(serviceProto, {
// 启用 WSS
wss: {
key: fs.readFileSync('cert/xxx.key'),
cert: fs.readFileSync('cert/xxx.crt')
},
// ...
})
tip
SSL 证书可以去阿里云、腾讯云免费申请。
申请教程:https://developer.aliyun.com/article/875508
注意事项
- 一旦配置了
https或wss,就不再能通过http://或ws://访问。如果需要同时支持 HTTPS / HTTP,你可以选择同时创建两个在不同端口的 HttpServer,或者依靠前置代理实现。 - 如果你前置了 nginx 或负载均衡,请确保前置代理和 TSRPC 服务,仅在一处配置了 HTTPS 证书即可。例如如果你在负载均衡中配置为 HTTPS 转发,则后端服务器无需再设置
https选项。
2. 支持自定义 module 路径解析
TypeScript 的模块规范中支持两种 import 路径:相对路径和全局路径。
对于全局路径(即不以 ./ 开头的路径),可以在 tsconfig.json 中配置 paths 选项来自定义路径解析。
TSRPC 由于是轻量化的 TypeScript 类型系统实现,所以不包含上述逻辑。
但在 tsrpc-cli@2.4.4 中,我们为 tsrpc.config.ts 的 proto 配置中增加了一个 resolveModule 的选项,来让你可以灵活的支持此项特性。
例如,有如下 tsconfig.json:
{
"compilerOptions": {
"paths": {
"@lib/*": [
"./src/shared/lib/*",
]
},
}
}
期望将全局路径 @lib/* 映射为 ./src/shared/lib/* (相对于当前命令行路径)。在新版本中,只需如下修改 tsrpc.config.ts 即可支持:
const tsrpcConf: TsrpcConfig = {
proto: [{
ptlDir: path.resolve(__dirname, './src/shared/protocols'),
output: path.resolve(__dirname, './src/shared/protocols/serviceProto.ts'),
resolveModule: v => {
if(v.startsWith('@lib/*')){
return v.replace('@lib', path.resolve('./src/shared/lib'));
}
return v;
}
}]
}
3. 对 copy 同步方式新增 readonly 选项
为 tsrpc.config.ts 的 sync 配置新增 readonly 选项,默认为 true。
用于配置当 type: 'copy' 时,是否以只读模式复制文件。
const tsrpcConf: TsrpcConfig = {
sync: [{
from: './src/shared',
to: '../frontend/src/shared',
type: 'copy',
// 复制,但不设为只读
readonly: false
}],
}
优化和问题修复
- 修复 MacOS 创建 Symlink 失败的问题
- 修复 WebSocket 由于未设置
onerror方法在 Cocos Creator 上的报错问题 preRecvDataFlow中移除了serviceName参数,由serviceId代替- 优化了日志颜色
- 支持 Api 和 Msg 同名
升级方式
所有更新均向后兼容,您可以根据项目需要选择升级与否。
本次更新涉及以下 NPM 包:
tsrpc@3.4.0tsrpc-browser@3.4.0tsrpc-miniapp@3.4.0tsrpc-cli@2.4.4
升级方式:
后端
npm i tsrpc@latest
npm i tsrpc-cli@latest -D
前端
浏览器项目:
npm i tsrpc-browser@latest
小程序项目:
npm i tsrpc-miniapp@latest