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')
},
// ...
})
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.0
tsrpc-browser@3.4.0
tsrpc-miniapp@3.4.0
tsrpc-cli@2.4.4
升级方式:
后端
npm i tsrpc@latest
npm i tsrpc-cli@latest -D
前端
浏览器项目:
npm i tsrpc-browser@latest
小程序项目:
npm i tsrpc-miniapp@latest