TsrpcNet.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. (function() {
  2. var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
  3. var __module = nodeEnv ? module : {exports:{}};
  4. var __filename = 'preview-scripts/assets/script/network/TsrpcNet.js';
  5. var __require = nodeEnv ? function (request) {
  6. return cc.require(request);
  7. } : function (request) {
  8. return __quick_compile_project__.require(request, __filename);
  9. };
  10. function __define (exports, require, module) {
  11. if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
  12. cc._RF.push(module, 'd07ddTPxvFMrq4RJAVU8Q6s', 'TsrpcNet');
  13. // script/network/TsrpcNet.ts
  14. "use strict";
  15. /**
  16. * tsrpc连接管理
  17. */
  18. Object.defineProperty(exports, "__esModule", { value: true });
  19. exports.TsrpcNet = void 0;
  20. var tsrpc_browser_1 = require("tsrpc-browser");
  21. var tsrpc_miniapp_1 = require("tsrpc-miniapp");
  22. var serviceProto_1 = require("../shared/serviceProto");
  23. var GameServerConfig_1 = require("./GameServerConfig");
  24. var ShareConfig_1 = require("./ShareConfig");
  25. var Security_1 = require("./Security");
  26. /** TSRPC网络模块 */
  27. var TsrpcNet = /** @class */ (function () {
  28. function TsrpcNet() {
  29. }
  30. /**
  31. * 创建连接房间服务器 Websocket 客户端
  32. * @param serverUrl 服务器地址
  33. * @returns WsClient
  34. */
  35. TsrpcNet.prototype.createWscRoom = function (serverUrl) {
  36. // 创建客户端与房间服务器的 WebSocket 连接
  37. var wscRoom = new (cc.sys.platform == cc.sys.WECHAT_GAME ? tsrpc_miniapp_1.WsClient : tsrpc_browser_1.WsClient)(serviceProto_1.serviceProto, {
  38. // server: serverUrl + "?" + Date.now(),
  39. server: serverUrl,
  40. heartbeat: {
  41. interval: GameServerConfig_1.GameServerConfig.heartbeat_interval,
  42. timeout: GameServerConfig_1.GameServerConfig.heartbeat_timeout
  43. },
  44. json: ShareConfig_1.ShareConfig.json,
  45. logger: console,
  46. });
  47. // this.flowClientApi(wscRoom);
  48. // this.flowAuth(wscRoom);
  49. return wscRoom;
  50. };
  51. /** HTTP 客户端协议数据加密、解密 */
  52. TsrpcNet.prototype.flowClientApi = function (hc) {
  53. if (!ShareConfig_1.ShareConfig.security)
  54. return;
  55. hc.flows.preSendDataFlow.push(function (v) {
  56. if (v.data instanceof Uint8Array) {
  57. v.data = Security_1.Security.encrypt(v.data);
  58. }
  59. return v;
  60. });
  61. // 在处理接收到的数据之前,通常要进行加密/解密
  62. hc.flows.preRecvDataFlow.push(function (v) {
  63. if (v.data instanceof Uint8Array) {
  64. v.data = Security_1.Security.decrypt(v.data);
  65. }
  66. return v;
  67. });
  68. };
  69. /** 帐号登录令牌验证是否逻辑(帐号中加入登录令牌,服务器通过令牌解析玩家数据,如果存在就是已登录) */
  70. TsrpcNet.prototype.flowAuth = function (client) {
  71. // 执行 callApi 之前协议中插入登录令牌
  72. client.flows.preCallApiFlow.push(function (v) {
  73. // 请求前插入登录令牌
  74. var ssoToken = cc.sys.localStorage.getItem('SSO_TOKEN');
  75. if (ssoToken) {
  76. v.req.__ssoToken = ssoToken;
  77. }
  78. return v;
  79. });
  80. // 将 callApi 的结果返回给调用方之后将登录令牌存到本地(收到协议时将登录令牌存到本地)
  81. client.flows.postApiReturnFlow.push(function (v) {
  82. if (v.return.isSucc) {
  83. var res = v.return.res;
  84. // 请求成功后刷新登录令牌
  85. // if (res.__ssoToken !== undefined) {
  86. // cc.sys.localStorage.setItem('SSO_TOKEN', res.__ssoToken);
  87. // }
  88. }
  89. // 登录令牌过期时删除客户端登录令牌(可跳转到登录界面)
  90. else if (v.return.err.code === 'NEED_LOGIN') {
  91. cc.sys.localStorage.setItem('SSO_TOKEN', '');
  92. }
  93. return v;
  94. });
  95. };
  96. return TsrpcNet;
  97. }());
  98. exports.TsrpcNet = TsrpcNet;
  99. cc._RF.pop();
  100. }
  101. if (nodeEnv) {
  102. __define(__module.exports, __require, __module);
  103. }
  104. else {
  105. __quick_compile_project__.registerModuleFunc(__filename, function () {
  106. __define(__module.exports, __require, __module);
  107. });
  108. }
  109. })();
  110. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvbmV0d29yay9Uc3JwY05ldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0dBRUc7OztBQUVILCtDQUErRjtBQUMvRiwrQ0FBK0Y7QUFDL0YsdURBQXVIO0FBQ3ZILHVEQUFzRDtBQUN0RCw2Q0FBNEM7QUFDNUMsdUNBQXNDO0FBSXRDLGdCQUFnQjtBQUNoQjtJQUVJO0lBQ0EsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQ0FBYSxHQUFiLFVBQWMsU0FBaUI7UUFDM0IsNEJBQTRCO1FBQzVCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsd0JBQWdCLENBQUMsQ0FBQyxDQUFDLHdCQUFnQixDQUFDLENBQUMsMkJBQWdCLEVBQUU7WUFDOUcsd0NBQXdDO1lBQ3hDLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLFNBQVMsRUFBRTtnQkFDUCxRQUFRLEVBQUUsbUNBQWdCLENBQUMsa0JBQWtCO2dCQUM3QyxPQUFPLEVBQUUsbUNBQWdCLENBQUMsaUJBQWlCO2FBQzlDO1lBQ0QsSUFBSSxFQUFFLHlCQUFXLENBQUMsSUFBSTtZQUN0QixNQUFNLEVBQUUsT0FBTztTQUVsQixDQUFDLENBQUM7UUFFSCwrQkFBK0I7UUFDL0IsMEJBQTBCO1FBRTFCLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRCx3QkFBd0I7SUFDaEIsZ0NBQWEsR0FBckIsVUFBc0IsRUFBTztRQUN6QixJQUFJLENBQUMseUJBQVcsQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUVsQyxFQUFFLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBQSxDQUFDO1lBQzNCLElBQUksQ0FBQyxDQUFDLElBQUksWUFBWSxVQUFVLEVBQUU7Z0JBQzlCLENBQUMsQ0FBQyxJQUFJLEdBQUcsbUJBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3JDO1lBQ0QsT0FBTyxDQUFDLENBQUM7UUFDYixDQUFDLENBQUMsQ0FBQztRQUVILHlCQUF5QjtRQUN6QixFQUFFLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBQSxDQUFDO1lBQzNCLElBQUksQ0FBQyxDQUFDLElBQUksWUFBWSxVQUFVLEVBQUU7Z0JBQzlCLENBQUMsQ0FBQyxJQUFJLEdBQUcsbUJBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3JDO1lBQ0QsT0FBTyxDQUFDLENBQUM7UUFDYixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxzREFBc0Q7SUFDOUMsMkJBQVEsR0FBaEIsVUFBaUIsTUFBVztRQUN4Qix5QkFBeUI7UUFDekIsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQUEsQ0FBQztZQUM5QixZQUFZO1lBQ1osSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3hELElBQUksUUFBUSxFQUFFO2dCQUNWLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQzthQUMvQjtZQUNELE9BQU8sQ0FBQyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLENBQUE7UUFFRixpREFBaUQ7UUFDakQsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBQSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBbUIsQ0FBQztnQkFFdkMsY0FBYztnQkFDZCxzQ0FBc0M7Z0JBQ3RDLGdFQUFnRTtnQkFDaEUsSUFBSTthQUNQO1lBQ0QsNkJBQTZCO2lCQUN4QixJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUU7Z0JBQ3pDLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7YUFDaEQ7WUFDRCxPQUFPLENBQUMsQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUlMLGVBQUM7QUFBRCxDQWxGQSxBQWtGQyxJQUFBO0FBbEZZLDRCQUFRIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIHRzcnBj6L+e5o6l566h55CGXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSHR0cENsaWVudCBhcyBIdHRwQ2xpZW50X0Jyb3dzZXIsIFdzQ2xpZW50IGFzIFdzQ2xpZW50X0Jyb3dzZXIgfSBmcm9tICd0c3JwYy1icm93c2VyJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCBhcyBIdHRwQ2xpZW50X01pbmlhcHAsIFdzQ2xpZW50IGFzIFdzQ2xpZW50X01pbmlhcHAgfSBmcm9tICd0c3JwYy1taW5pYXBwJztcclxuaW1wb3J0IHsgc2VydmljZVByb3RvIGFzIFNlcnZpY2VQcm90b1Jvb20sIFNlcnZpY2VUeXBlLCBTZXJ2aWNlVHlwZSBhcyBTZXJ2aWNlVHlwZVJvb20gfSBmcm9tIFwiLi4vc2hhcmVkL3NlcnZpY2VQcm90b1wiO1xyXG5pbXBvcnQgeyBHYW1lU2VydmVyQ29uZmlnIH0gZnJvbSAnLi9HYW1lU2VydmVyQ29uZmlnJztcclxuaW1wb3J0IHsgU2hhcmVDb25maWcgfSBmcm9tICcuL1NoYXJlQ29uZmlnJztcclxuaW1wb3J0IHsgU2VjdXJpdHkgfSBmcm9tICcuL1NlY3VyaXR5JztcclxuaW1wb3J0IHsgQmFzZVJlc3BvbnNlIH0gZnJvbSAnLi4vc2hhcmVkL2Jhc2UnO1xyXG5cclxuXHJcbi8qKiBUU1JQQ+e9kee7nOaooeWdlyAqL1xyXG5leHBvcnQgY2xhc3MgVHNycGNOZXQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogIOWIm+W7uui/nuaOpeaIv+mXtOacjeWKoeWZqCBXZWJzb2NrZXQg5a6i5oi356uvXHJcbiAgICAgKiBAcGFyYW0gc2VydmVyVXJsIOacjeWKoeWZqOWcsOWdgFxyXG4gICAgICogQHJldHVybnMgV3NDbGllbnRcclxuICAgICAqL1xyXG4gICAgY3JlYXRlV3NjUm9vbShzZXJ2ZXJVcmw6IHN0cmluZykge1xyXG4gICAgICAgIC8vIOWIm+W7uuWuouaIt+err+S4juaIv+mXtOacjeWKoeWZqOeahCBXZWJTb2NrZXQg6L+e5o6lXHJcbiAgICAgICAgbGV0IHdzY1Jvb20gPSBuZXcgKGNjLnN5cy5wbGF0Zm9ybSA9PSBjYy5zeXMuV0VDSEFUX0dBTUUgPyBXc0NsaWVudF9NaW5pYXBwIDogV3NDbGllbnRfQnJvd3NlcikoU2VydmljZVByb3RvUm9vbSwge1xyXG4gICAgICAgICAgICAvLyBzZXJ2ZXI6IHNlcnZlclVybCArIFwiP1wiICsgRGF0ZS5ub3coKSxcclxuICAgICAgICAgICAgc2VydmVyOiBzZXJ2ZXJVcmwsXHJcbiAgICAgICAgICAgIGhlYXJ0YmVhdDoge1xyXG4gICAgICAgICAgICAgICAgaW50ZXJ2YWw6IEdhbWVTZXJ2ZXJDb25maWcuaGVhcnRiZWF0X2ludGVydmFsLFxyXG4gICAgICAgICAgICAgICAgdGltZW91dDogR2FtZVNlcnZlckNvbmZpZy5oZWFydGJlYXRfdGltZW91dFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBqc29uOiBTaGFyZUNvbmZpZy5qc29uLFxyXG4gICAgICAgICAgICBsb2dnZXI6IGNvbnNvbGUsXHJcbiAgICAgICAgICAgIC8vIGxvZ01zZzogdHJ1ZSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gdGhpcy5mbG93Q2xpZW50QXBpKHdzY1Jvb20pO1xyXG4gICAgICAgIC8vIHRoaXMuZmxvd0F1dGgod3NjUm9vbSk7XHJcblxyXG4gICAgICAgIHJldHVybiB3c2NSb29tO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBIVFRQIOWuouaIt+err+WNj+iuruaVsOaNruWKoOWvhuOAgeino+WvhiAqL1xyXG4gICAgcHJpdmF0ZSBmbG93Q2xpZW50QXBpKGhjOiBhbnkpIHtcclxuICAgICAgICBpZiAoIVNoYXJlQ29uZmlnLnNlY3VyaXR5KSByZXR1cm47XHJcblxyXG4gICAgICAgIGhjLmZsb3dzLnByZVNlbmREYXRhRmxvdy5wdXNoKHYgPT4ge1xyXG4gICAgICAgICAgICBpZiAodi5kYXRhIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xyXG4gICAgICAgICAgICAgICAgdi5kYXRhID0gU2VjdXJpdHkuZW5jcnlwdCh2LmRhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB2O1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyDlnKjlpITnkIbmjqXmlLbliLDnmoTmlbDmja7kuYvliY3vvIzpgJrluLjopoHov5vooYzliqDlr4Yv6Kej5a+GXHJcbiAgICAgICAgaGMuZmxvd3MucHJlUmVjdkRhdGFGbG93LnB1c2godiA9PiB7XHJcbiAgICAgICAgICAgIGlmICh2LmRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XHJcbiAgICAgICAgICAgICAgICB2LmRhdGEgPSBTZWN1cml0eS5kZWNyeXB0KHYuZGF0YSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHY7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIOW4kOWPt+eZu+W9leS7pOeJjOmqjOivgeaYr+WQpumAu+i+ke+8iOW4kOWPt+S4reWKoOWFpeeZu+W9leS7pOeJjO+8jOacjeWKoeWZqOmAmui/h+S7pOeJjOino+aekOeOqeWutuaVsOaNru+8jOWmguaenOWtmOWcqOWwseaYr+W3sueZu+W9le+8iSAqL1xyXG4gICAgcHJpdmF0ZSBmbG93QXV0aChjbGllbnQ6IGFueSkgeyAgICAgICAgICAgICAgLy8gSHR0cENsaWVudCBXc0NsaWVudFxyXG4gICAgICAgIC8vIOaJp+ihjCBjYWxsQXBpIOS5i+WJjeWNj+iuruS4reaPkuWFpeeZu+W9leS7pOeJjFxyXG4gICAgICAgIGNsaWVudC5mbG93cy5wcmVDYWxsQXBpRmxvdy5wdXNoKHYgPT4ge1xyXG4gICAgICAgICAgICAvLyDor7fmsYLliY3mj5LlhaXnmbvlvZXku6TniYxcclxuICAgICAgICAgICAgbGV0IHNzb1Rva2VuID0gY2Muc3lzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdTU09fVE9LRU4nKTtcclxuICAgICAgICAgICAgaWYgKHNzb1Rva2VuKSB7XHJcbiAgICAgICAgICAgICAgICB2LnJlcS5fX3Nzb1Rva2VuID0gc3NvVG9rZW47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHY7XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgLy8g5bCGIGNhbGxBcGkg55qE57uT5p6c6L+U5Zue57uZ6LCD55So5pa55LmL5ZCO5bCG55m75b2V5Luk54mM5a2Y5Yiw5pys5Zyw77yI5pS25Yiw5Y2P6K6u5pe25bCG55m75b2V5Luk54mM5a2Y5Yiw5pys5Zyw77yJXHJcbiAgICAgICAgY2xpZW50LmZsb3dzLnBvc3RBcGlSZXR1cm5GbG93LnB1c2godiA9PiB7XHJcbiAgICAgICAgICAgIGlmICh2LnJldHVybi5pc1N1Y2MpIHtcclxuICAgICAgICAgICAgICAgIGxldCByZXMgPSB2LnJldHVybi5yZXMgYXMgQmFzZVJlc3BvbnNlO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIOivt+axguaIkOWKn+WQjuWIt+aWsOeZu+W9leS7pOeJjFxyXG4gICAgICAgICAgICAgICAgLy8gaWYgKHJlcy5fX3Nzb1Rva2VuICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIC8vICAgICBjYy5zeXMubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1NTT19UT0tFTicsIHJlcy5fX3Nzb1Rva2VuKTtcclxuICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyDnmbvlvZXku6TniYzov4fmnJ/ml7bliKDpmaTlrqLmiLfnq6/nmbvlvZXku6TniYzvvIjlj6/ot7PovazliLDnmbvlvZXnlYzpnaLvvIlcclxuICAgICAgICAgICAgZWxzZSBpZiAodi5yZXR1cm4uZXJyLmNvZGUgPT09ICdORUVEX0xPR0lOJykge1xyXG4gICAgICAgICAgICAgICAgY2Muc3lzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdTU09fVE9LRU4nLCAnJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHY7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbn0iXX0=