cgserver 12.0.8 → 12.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/README.md +9 -0
  2. package/dist/lib/Framework/AI/AiObject.js +10 -10
  3. package/dist/lib/Framework/AI/Astar.js +133 -133
  4. package/dist/lib/Framework/AI/BehaviorAI.js +340 -307
  5. package/dist/lib/Framework/AI/Entity.js +33 -33
  6. package/dist/lib/Framework/AI/Point.js +68 -68
  7. package/dist/lib/Framework/AI/TriggerMgr.js +201 -201
  8. package/dist/lib/Framework/Config/Config.js +74 -41
  9. package/dist/lib/Framework/Config/DbConfig.js +14 -14
  10. package/dist/lib/Framework/Config/FrameworkConfig.js +139 -173
  11. package/dist/lib/Framework/Config/IServerConfig.js +31 -31
  12. package/dist/lib/Framework/Config/_error_.js +35 -35
  13. package/dist/lib/Framework/Core/ByteTool.js +85 -85
  14. package/dist/lib/Framework/Core/Core.js +724 -688
  15. package/dist/lib/Framework/Core/Timer.js +116 -116
  16. package/dist/lib/Framework/Database/Decorator/AutoIncrement.js +10 -11
  17. package/dist/lib/Framework/Database/Decorator/DBCache.js +98 -65
  18. package/dist/lib/Framework/Database/Decorator/NotNull.js +10 -11
  19. package/dist/lib/Framework/Database/Decorator/PrimaryKey.js +10 -11
  20. package/dist/lib/Framework/Database/Decorator/Property.js +61 -61
  21. package/dist/lib/Framework/Database/Decorator/Table.js +14 -15
  22. package/dist/lib/Framework/Database/Decorator/Type.js +19 -20
  23. package/dist/lib/Framework/Database/MSSql/MSSqlManager.js +86 -53
  24. package/dist/lib/Framework/Database/Mongo/MongoBaseService.js +141 -141
  25. package/dist/lib/Framework/Database/Mongo/MongoManager.js +595 -547
  26. package/dist/lib/Framework/Database/Mongo/MongoServiceManager.js +52 -52
  27. package/dist/lib/Framework/Database/Mysql/MysqlBaseService.js +280 -280
  28. package/dist/lib/Framework/Database/Mysql/MysqlManager.js +138 -105
  29. package/dist/lib/Framework/Database/Redis/RedisManager.js +94 -61
  30. package/dist/lib/Framework/Decorator/AdminValidate.js +18 -19
  31. package/dist/lib/Framework/Decorator/AuthorityValidate.js +22 -22
  32. package/dist/lib/Framework/Decorator/CreatorValidate.js +18 -19
  33. package/dist/lib/Framework/Decorator/JsonAdminValidate.js +14 -15
  34. package/dist/lib/Framework/Decorator/JsonAuthorityValidate.js +20 -20
  35. package/dist/lib/Framework/Decorator/JsonCreatorValidate.js +18 -19
  36. package/dist/lib/Framework/Decorator/SyncCall.js +41 -42
  37. package/dist/lib/Framework/Decorator/SyncCallServer.js +77 -77
  38. package/dist/lib/Framework/Logic/CacheTool.js +106 -73
  39. package/dist/lib/Framework/Logic/EventTool.js +31 -28
  40. package/dist/lib/Framework/Logic/HttpTool.js +138 -105
  41. package/dist/lib/Framework/Logic/Log.js +121 -88
  42. package/dist/lib/Framework/Logic/SyncQueueTool.js +44 -44
  43. package/dist/lib/Framework/Server/ProtoFilter/GoogleProtoFilter.js +90 -57
  44. package/dist/lib/Framework/Server/ProtoFilter/IProtoFilter.js +9 -9
  45. package/dist/lib/Framework/Server/ProtoFilter/JsonProtoFilter.js +29 -29
  46. package/dist/lib/Framework/Server/ProtoFilter/ProtoFactory.js +35 -35
  47. package/dist/lib/Framework/Server/RpcWebSocketServer/CgMq.js +180 -180
  48. package/dist/lib/Framework/Server/RpcWebSocketServer/IRpc.js +38 -38
  49. package/dist/lib/Framework/Server/RpcWebSocketServer/IRpcClientWebSocket.js +253 -253
  50. package/dist/lib/Framework/Server/RpcWebSocketServer/IRpcServerWebSocket.js +94 -94
  51. package/dist/lib/Framework/Server/SocketServer/IClientSocket.js +44 -44
  52. package/dist/lib/Framework/Server/SocketServer/IServerSocket.js +114 -81
  53. package/dist/lib/Framework/Server/SocketServer/ISocket.js +255 -222
  54. package/dist/lib/Framework/Server/SocketServer/ISocketServer.js +177 -144
  55. package/dist/lib/Framework/Server/SocketServer/PacketParser.js +40 -40
  56. package/dist/lib/Framework/Server/WebServer/Controller/BaseController.js +119 -119
  57. package/dist/lib/Framework/Server/WebServer/Controller/MongoBaseUserController.js +171 -171
  58. package/dist/lib/Framework/Server/WebServer/Controller/MysqlBaseUserController.js +169 -169
  59. package/dist/lib/Framework/Server/WebServer/Engine/ControllerManager.js +115 -115
  60. package/dist/lib/Framework/Server/WebServer/Engine/Engine.js +254 -218
  61. package/dist/lib/Framework/Server/WebServer/Engine/RazorJs.js +543 -543
  62. package/dist/lib/Framework/Server/WebServer/Engine/Request.js +226 -226
  63. package/dist/lib/Framework/Server/WebServer/Engine/Response.js +120 -87
  64. package/dist/lib/Framework/Server/WebServer/IWebServer.js +55 -55
  65. package/dist/lib/Framework/Server/WebSocketServer/IClientWebSocket.js +44 -44
  66. package/dist/lib/Framework/Server/WebSocketServer/IServerWebSocket.js +128 -95
  67. package/dist/lib/Framework/Server/WebSocketServer/IWebSocket.js +248 -215
  68. package/dist/lib/Framework/Server/WebSocketServer/IWebSocketServer.js +250 -217
  69. package/dist/lib/Framework/Service/MongoAccountService.js +339 -339
  70. package/dist/lib/Framework/Service/MongoCacheService.js +50 -50
  71. package/dist/lib/Framework/Service/MongoUserService.js +129 -96
  72. package/dist/lib/Framework/Service/MysqlAccountService.js +411 -411
  73. package/dist/lib/Framework/Service/MysqlUserService.js +204 -171
  74. package/dist/lib/Framework/Service/ini.js +36 -36
  75. package/dist/lib/Framework/ThirdParty/AlipayTool.js +117 -205
  76. package/dist/lib/Framework/ThirdParty/Alisms.js +61 -50
  77. package/dist/lib/Framework/ThirdParty/AppleTool.js +271 -235
  78. package/dist/lib/Framework/ThirdParty/CgRankTool.js +215 -215
  79. package/dist/lib/Framework/ThirdParty/EmailTool.js +71 -38
  80. package/dist/lib/Framework/ThirdParty/QQTool.js +162 -129
  81. package/dist/lib/Framework/ThirdParty/QiniuTool.js +62 -29
  82. package/dist/lib/Framework/ThirdParty/Rpc.js +79 -79
  83. package/dist/lib/Framework/ThirdParty/WechatTool.js +167 -134
  84. package/dist/lib/Framework/cgserver.js +215 -212
  85. package/dist/lib/Framework/global.js +74 -74
  86. package/dist/lib/Framework/index.js +38 -5
  87. package/dist/lib/Framework/index_export_.js +180 -177
  88. package/dist/lib/test/test.js +21 -21
  89. package/dist/types/Framework/AI/AiObject.d.ts +5 -5
  90. package/dist/types/Framework/AI/Astar.d.ts +38 -38
  91. package/dist/types/Framework/AI/BehaviorAI.d.ts +24 -24
  92. package/dist/types/Framework/AI/Entity.d.ts +12 -12
  93. package/dist/types/Framework/AI/Point.d.ts +17 -17
  94. package/dist/types/Framework/AI/TriggerMgr.d.ts +51 -51
  95. package/dist/types/Framework/Config/Config.d.ts +9 -9
  96. package/dist/types/Framework/Config/DbConfig.d.ts +11 -11
  97. package/dist/types/Framework/Config/FrameworkConfig.d.ts +146 -178
  98. package/dist/types/Framework/Config/IServerConfig.d.ts +9 -9
  99. package/dist/types/Framework/Config/_error_.d.ts +99 -99
  100. package/dist/types/Framework/Core/ByteTool.d.ts +21 -21
  101. package/dist/types/Framework/Core/Core.d.ts +119 -120
  102. package/dist/types/Framework/Core/Timer.d.ts +16 -16
  103. package/dist/types/Framework/Database/Decorator/AutoIncrement.d.ts +1 -1
  104. package/dist/types/Framework/Database/Decorator/DBCache.d.ts +22 -22
  105. package/dist/types/Framework/Database/Decorator/NotNull.d.ts +1 -1
  106. package/dist/types/Framework/Database/Decorator/PrimaryKey.d.ts +1 -1
  107. package/dist/types/Framework/Database/Decorator/Property.d.ts +57 -57
  108. package/dist/types/Framework/Database/Decorator/Table.d.ts +1 -1
  109. package/dist/types/Framework/Database/Decorator/Type.d.ts +1 -1
  110. package/dist/types/Framework/Database/MSSql/MSSqlManager.d.ts +26 -26
  111. package/dist/types/Framework/Database/Mongo/MongoBaseService.d.ts +116 -116
  112. package/dist/types/Framework/Database/Mongo/MongoManager.d.ts +207 -204
  113. package/dist/types/Framework/Database/Mongo/MongoServiceManager.d.ts +13 -13
  114. package/dist/types/Framework/Database/Mysql/MysqlBaseService.d.ts +34 -34
  115. package/dist/types/Framework/Database/Mysql/MysqlManager.d.ts +30 -30
  116. package/dist/types/Framework/Database/Redis/RedisManager.d.ts +24 -24
  117. package/dist/types/Framework/Decorator/AdminValidate.d.ts +1 -1
  118. package/dist/types/Framework/Decorator/AuthorityValidate.d.ts +2 -2
  119. package/dist/types/Framework/Decorator/CreatorValidate.d.ts +1 -1
  120. package/dist/types/Framework/Decorator/JsonAdminValidate.d.ts +1 -1
  121. package/dist/types/Framework/Decorator/JsonAuthorityValidate.d.ts +2 -2
  122. package/dist/types/Framework/Decorator/JsonCreatorValidate.d.ts +1 -1
  123. package/dist/types/Framework/Decorator/SyncCall.d.ts +12 -12
  124. package/dist/types/Framework/Decorator/SyncCallServer.d.ts +14 -14
  125. package/dist/types/Framework/Logic/CacheTool.d.ts +27 -27
  126. package/dist/types/Framework/Logic/EventTool.d.ts +11 -12
  127. package/dist/types/Framework/Logic/HttpTool.d.ts +19 -19
  128. package/dist/types/Framework/Logic/Log.d.ts +18 -18
  129. package/dist/types/Framework/Logic/SyncQueueTool.d.ts +21 -21
  130. package/dist/types/Framework/Server/ProtoFilter/GoogleProtoFilter.d.ts +9 -9
  131. package/dist/types/Framework/Server/ProtoFilter/IProtoFilter.d.ts +10 -10
  132. package/dist/types/Framework/Server/ProtoFilter/JsonProtoFilter.d.ts +6 -6
  133. package/dist/types/Framework/Server/ProtoFilter/ProtoFactory.d.ts +12 -12
  134. package/dist/types/Framework/Server/RpcWebSocketServer/CgMq.d.ts +59 -59
  135. package/dist/types/Framework/Server/RpcWebSocketServer/IRpc.d.ts +33 -33
  136. package/dist/types/Framework/Server/RpcWebSocketServer/IRpcClientWebSocket.d.ts +34 -34
  137. package/dist/types/Framework/Server/RpcWebSocketServer/IRpcServerWebSocket.d.ts +23 -23
  138. package/dist/types/Framework/Server/SocketServer/IClientSocket.d.ts +16 -18
  139. package/dist/types/Framework/Server/SocketServer/IServerSocket.d.ts +27 -29
  140. package/dist/types/Framework/Server/SocketServer/ISocket.d.ts +78 -81
  141. package/dist/types/Framework/Server/SocketServer/ISocketServer.d.ts +44 -45
  142. package/dist/types/Framework/Server/SocketServer/PacketParser.d.ts +8 -10
  143. package/dist/types/Framework/Server/WebServer/Controller/BaseController.d.ts +34 -34
  144. package/dist/types/Framework/Server/WebServer/Controller/MongoBaseUserController.d.ts +28 -28
  145. package/dist/types/Framework/Server/WebServer/Controller/MysqlBaseUserController.d.ts +27 -27
  146. package/dist/types/Framework/Server/WebServer/Engine/ControllerManager.d.ts +37 -37
  147. package/dist/types/Framework/Server/WebServer/Engine/Engine.d.ts +42 -44
  148. package/dist/types/Framework/Server/WebServer/Engine/RazorJs.d.ts +21 -21
  149. package/dist/types/Framework/Server/WebServer/Engine/Request.d.ts +47 -50
  150. package/dist/types/Framework/Server/WebServer/Engine/Response.d.ts +26 -26
  151. package/dist/types/Framework/Server/WebServer/IWebServer.d.ts +22 -22
  152. package/dist/types/Framework/Server/WebSocketServer/IClientWebSocket.d.ts +17 -17
  153. package/dist/types/Framework/Server/WebSocketServer/IServerWebSocket.d.ts +37 -38
  154. package/dist/types/Framework/Server/WebSocketServer/IWebSocket.d.ts +76 -76
  155. package/dist/types/Framework/Server/WebSocketServer/IWebSocketServer.d.ts +49 -49
  156. package/dist/types/Framework/Service/MongoAccountService.d.ts +62 -62
  157. package/dist/types/Framework/Service/MongoCacheService.d.ts +19 -19
  158. package/dist/types/Framework/Service/MongoUserService.d.ts +31 -31
  159. package/dist/types/Framework/Service/MysqlAccountService.d.ts +67 -67
  160. package/dist/types/Framework/Service/MysqlUserService.d.ts +33 -33
  161. package/dist/types/Framework/Service/ini.d.ts +29 -29
  162. package/dist/types/Framework/ThirdParty/AlipayTool.d.ts +76 -108
  163. package/dist/types/Framework/ThirdParty/Alisms.d.ts +23 -13
  164. package/dist/types/Framework/ThirdParty/AppleTool.d.ts +131 -131
  165. package/dist/types/Framework/ThirdParty/CgRankTool.d.ts +107 -107
  166. package/dist/types/Framework/ThirdParty/EmailTool.d.ts +4 -4
  167. package/dist/types/Framework/ThirdParty/QQTool.d.ts +41 -41
  168. package/dist/types/Framework/ThirdParty/QiniuTool.d.ts +5 -5
  169. package/dist/types/Framework/ThirdParty/Rpc.d.ts +28 -28
  170. package/dist/types/Framework/ThirdParty/WechatTool.d.ts +30 -30
  171. package/dist/types/Framework/cgserver.d.ts +63 -63
  172. package/dist/types/Framework/global.d.ts +45 -45
  173. package/dist/types/Framework/index.d.ts +2 -2
  174. package/dist/types/Framework/index_export_.d.ts +81 -79
  175. package/dist/types/test/test.d.ts +1 -1
  176. package/package.json +8 -4
@@ -1,222 +1,255 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ISocket = exports.BaseMsg = void 0;
4
- const IProtoFilter_1 = require("../ProtoFilter/IProtoFilter");
5
- const Core_1 = require("../../Core/Core");
6
- const _ = require("underscore");
7
- const ProtoFactory_1 = require("../ProtoFilter/ProtoFactory");
8
- const SyncQueueTool_1 = require("../../Logic/SyncQueueTool");
9
- const Log_1 = require("../../Logic/Log");
10
- const PacketParser_1 = require("./PacketParser");
11
- class BaseMsg {
12
- cmd;
13
- errcode;
14
- servertime = Date.now();
15
- constructor(cmd, errcode) {
16
- this.cmd = cmd;
17
- this.errcode = errcode;
18
- }
19
- }
20
- exports.BaseMsg = BaseMsg;
21
- class ISocket {
22
- /**
23
- * 是否同步消息
24
- * 默认为true
25
- */
26
- _is_sync_msg = true;
27
- get isSynMsg() {
28
- return this._is_sync_msg;
29
- }
30
- _debug_msg = false;
31
- get debug_msg() {
32
- return this._debug_msg;
33
- }
34
- set debug_msg(value) {
35
- this._debug_msg = value;
36
- }
37
- _socket_id = 0;
38
- get socketId() {
39
- return this._socket_id;
40
- }
41
- _tipKey = "";
42
- get tipKey() {
43
- return this._tipKey;
44
- }
45
- _socket = null;
46
- get socket() {
47
- return this._socket;
48
- }
49
- _protoType = IProtoFilter_1.EProtoType.Json;
50
- _protoFilter = null;
51
- _protoPath = "";
52
- _ip = null;
53
- get remoteHost() {
54
- if (!this._ip && this._socket) {
55
- this._ip = this._socket.remoteAddress;
56
- this._ip = this._ip.substring(this._ip.lastIndexOf(":") + 1);
57
- }
58
- return this._ip;
59
- }
60
- get connected() {
61
- if (this._socket
62
- && this._socket.readyState == "open") {
63
- return true;
64
- }
65
- return false;
66
- }
67
- _nodebugmsgs = {
68
- "heartbeat": true,
69
- "ping": true
70
- };
71
- _packetParser;
72
- constructor(protoType = IProtoFilter_1.EProtoType.Json, protoPath = "") {
73
- this._socket_id = parseInt(_.uniqueId());
74
- this._protoType = protoType;
75
- this._protoPath = protoPath;
76
- this._packetParser = new PacketParser_1.PacketParser();
77
- }
78
- getNewMsg(cmd, errcode) {
79
- let msg = new BaseMsg(cmd, errcode);
80
- return msg;
81
- }
82
- receive_heartbeat(jsonData) {
83
- this.send_heartbeat();
84
- }
85
- send_heartbeat() {
86
- let msg = this.getNewMsg("heartbeat");
87
- this.send(msg);
88
- }
89
- onConnect(_socket) {
90
- this._socket = _socket;
91
- if (!this._protoFilter) {
92
- this._protoFilter = ProtoFactory_1.gProtoFactory.createFilter(this._protoType);
93
- this._protoFilter.init(this._protoPath);
94
- }
95
- this._socket.on("data", this._onData.bind(this));
96
- this._socket.on("error", this.onError.bind(this));
97
- this._socket.on("close", this.onClose.bind(this));
98
- this.onOpen();
99
- }
100
- _onData(message) {
101
- try {
102
- this._packetParser.push(message);
103
- let packet = this._packetParser.parse();
104
- while (packet) {
105
- this.onMessage(packet);
106
- packet = this._packetParser.parse();
107
- }
108
- }
109
- catch (e) {
110
- Log_1.gLog.error(this.tipKey + ' Received Message Handle Error: ' + e);
111
- }
112
- }
113
- onMessage(packet) {
114
- try {
115
- let msg = this._onDecode(packet);
116
- if (this._is_sync_msg) {
117
- SyncQueueTool_1.gSyncQueueTool.add(this._socket_id + "", this._onMessage, this, msg);
118
- }
119
- else {
120
- this._onMessage(msg);
121
- }
122
- }
123
- catch (e) {
124
- Log_1.gLog.error(this.tipKey + ' Received Message Handle Error: ' + e);
125
- }
126
- }
127
- _onDecode(message, ...params) {
128
- return this._protoFilter.decode(message, ...params);
129
- }
130
- _onEncode(data, ...params) {
131
- let msg = this._protoFilter.encode(data, ...params);
132
- return msg;
133
- }
134
- /**
135
- * 过滤消息,每个消息处理之前调用
136
- * @param msg
137
- * @returns
138
- */
139
- filterMsg(msg) {
140
- if (!msg) {
141
- Log_1.gLog.error({ tipKey: this.tipKey, action: "receive", error: "no cmd", msg });
142
- return false;
143
- }
144
- if (this._debug_msg && !this._nodebugmsgs[msg.cmd]) {
145
- Log_1.gLog.info({ tipKey: this.tipKey, action: "receive", msg });
146
- }
147
- if (!msg.cmd) {
148
- Log_1.gLog.error({ tipKey: this.tipKey, action: "receive", error: "no cmd", msg });
149
- return false;
150
- }
151
- return true;
152
- }
153
- async _onMessage(data) {
154
- let time = Date.now();
155
- let jsonData = data;
156
- let func = this["receive_" + jsonData.cmd];
157
- let ret = this.filterMsg(jsonData);
158
- if (!ret) {
159
- return;
160
- }
161
- else if (!func) {
162
- let otherfunc = this["receive_other_all"];
163
- if (otherfunc) {
164
- await Core_1.core.safeCall(otherfunc, this, jsonData);
165
- }
166
- else {
167
- Log_1.gLog.error(this.tipKey + ' Received Message warning: no cmd handle,cmd=' + jsonData.cmd);
168
- }
169
- }
170
- else {
171
- await Core_1.core.safeCall(func, this, jsonData);
172
- }
173
- if (this._debug_msg && !this._nodebugmsgs[jsonData.cmd]) {
174
- Log_1.gLog.info("[" + (Date.now() - time) + "ms] " + jsonData.cmd);
175
- }
176
- }
177
- onOpen(e) {
178
- }
179
- onError(e) {
180
- }
181
- onClose(reasonCode, description) {
182
- Log_1.gLog.info(this.tipKey + " " + this._socket_id + ":onClose resonCode=" + reasonCode + " des=" + description);
183
- }
184
- filterSendMsg(msg) {
185
- if (!this.connected) {
186
- return false;
187
- }
188
- if (!msg) {
189
- Log_1.gLog.error(this.tipKey + " Send Message warning:null data!");
190
- return false;
191
- }
192
- if (this._debug_msg && !this._nodebugmsgs[msg.cmd]) {
193
- Log_1.gLog.info({ tipKey: this.tipKey, action: "send", msg });
194
- }
195
- return true;
196
- }
197
- send(msg) {
198
- let ret = this.filterSendMsg(msg);
199
- if (!ret) {
200
- return;
201
- }
202
- let data = this._onEncode(msg);
203
- this._socket.write(this._packetParser.pack(data));
204
- }
205
- /**
206
- * Close the connection. A close frame will be sent to the remote peer indicating
207
- * that we wish to close the connection, and we will then wait for up to
208
- * `config.closeTimeout` milliseconds for an acknowledgment from the remote peer
209
- * before terminating the underlying socket connection.
210
- */
211
- close(reasonCode, description) {
212
- this._socket.end();
213
- }
214
- /**
215
- * Send a close frame to the remote peer and immediately close the socket without
216
- * waiting for a response. This should generally be used only in error conditions.
217
- */
218
- drop(reasonCode, description, skipCloseFrame) {
219
- this._socket.destroy();
220
- }
221
- }
222
- exports.ISocket = ISocket;
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ISocket = exports.BaseMsg = void 0;
37
+ const IProtoFilter_1 = require("../ProtoFilter/IProtoFilter");
38
+ const Core_1 = require("../../Core/Core");
39
+ const _ = __importStar(require("underscore"));
40
+ const ProtoFactory_1 = require("../ProtoFilter/ProtoFactory");
41
+ const SyncQueueTool_1 = require("../../Logic/SyncQueueTool");
42
+ const Log_1 = require("../../Logic/Log");
43
+ const PacketParser_1 = require("./PacketParser");
44
+ class BaseMsg {
45
+ cmd;
46
+ errcode;
47
+ servertime = Date.now();
48
+ constructor(cmd, errcode) {
49
+ this.cmd = cmd;
50
+ this.errcode = errcode;
51
+ }
52
+ }
53
+ exports.BaseMsg = BaseMsg;
54
+ class ISocket {
55
+ /**
56
+ * 是否同步消息
57
+ * 默认为true
58
+ */
59
+ _is_sync_msg = true;
60
+ get isSynMsg() {
61
+ return this._is_sync_msg;
62
+ }
63
+ _debug_msg = false;
64
+ get debug_msg() {
65
+ return this._debug_msg;
66
+ }
67
+ set debug_msg(value) {
68
+ this._debug_msg = value;
69
+ }
70
+ _socket_id = 0;
71
+ get socketId() {
72
+ return this._socket_id;
73
+ }
74
+ _tipKey = "";
75
+ get tipKey() {
76
+ return this._tipKey;
77
+ }
78
+ _socket = null;
79
+ get socket() {
80
+ return this._socket;
81
+ }
82
+ _protoType = IProtoFilter_1.EProtoType.Json;
83
+ _protoFilter = null;
84
+ _protoPath = "";
85
+ _ip = null;
86
+ get remoteHost() {
87
+ if (!this._ip && this._socket) {
88
+ this._ip = this._socket.remoteAddress;
89
+ this._ip = this._ip.substring(this._ip.lastIndexOf(":") + 1);
90
+ }
91
+ return this._ip;
92
+ }
93
+ get connected() {
94
+ if (this._socket
95
+ && this._socket.readyState == "open") {
96
+ return true;
97
+ }
98
+ return false;
99
+ }
100
+ _nodebugmsgs = {
101
+ "heartbeat": true,
102
+ "ping": true
103
+ };
104
+ _packetParser;
105
+ constructor(protoType = IProtoFilter_1.EProtoType.Json, protoPath = "") {
106
+ this._socket_id = parseInt(_.uniqueId());
107
+ this._protoType = protoType;
108
+ this._protoPath = protoPath;
109
+ this._packetParser = new PacketParser_1.PacketParser();
110
+ }
111
+ getNewMsg(cmd, errcode) {
112
+ let msg = new BaseMsg(cmd, errcode);
113
+ return msg;
114
+ }
115
+ receive_heartbeat(jsonData) {
116
+ this.send_heartbeat();
117
+ }
118
+ send_heartbeat() {
119
+ let msg = this.getNewMsg("heartbeat");
120
+ this.send(msg);
121
+ }
122
+ onConnect(_socket) {
123
+ this._socket = _socket;
124
+ if (!this._protoFilter) {
125
+ this._protoFilter = ProtoFactory_1.gProtoFactory.createFilter(this._protoType);
126
+ this._protoFilter.init(this._protoPath);
127
+ }
128
+ this._socket.on("data", this._onData.bind(this));
129
+ this._socket.on("error", this.onError.bind(this));
130
+ this._socket.on("close", this.onClose.bind(this));
131
+ this.onOpen();
132
+ }
133
+ _onData(message) {
134
+ try {
135
+ this._packetParser.push(message);
136
+ let packet = this._packetParser.parse();
137
+ while (packet) {
138
+ this.onMessage(packet);
139
+ packet = this._packetParser.parse();
140
+ }
141
+ }
142
+ catch (e) {
143
+ Log_1.gLog.error(this.tipKey + ' Received Message Handle Error: ' + e);
144
+ }
145
+ }
146
+ onMessage(packet) {
147
+ try {
148
+ let msg = this._onDecode(packet);
149
+ if (this._is_sync_msg) {
150
+ SyncQueueTool_1.gSyncQueueTool.add(this._socket_id + "", this._onMessage, this, msg);
151
+ }
152
+ else {
153
+ this._onMessage(msg);
154
+ }
155
+ }
156
+ catch (e) {
157
+ Log_1.gLog.error(this.tipKey + ' Received Message Handle Error: ' + e);
158
+ }
159
+ }
160
+ _onDecode(message, ...params) {
161
+ return this._protoFilter.decode(message, ...params);
162
+ }
163
+ _onEncode(data, ...params) {
164
+ let msg = this._protoFilter.encode(data, ...params);
165
+ return msg;
166
+ }
167
+ /**
168
+ * 过滤消息,每个消息处理之前调用
169
+ * @param msg
170
+ * @returns
171
+ */
172
+ filterMsg(msg) {
173
+ if (!msg) {
174
+ Log_1.gLog.error({ tipKey: this.tipKey, action: "receive", error: "no cmd", msg });
175
+ return false;
176
+ }
177
+ if (this._debug_msg && !this._nodebugmsgs[msg.cmd]) {
178
+ Log_1.gLog.info({ tipKey: this.tipKey, action: "receive", msg });
179
+ }
180
+ if (!msg.cmd) {
181
+ Log_1.gLog.error({ tipKey: this.tipKey, action: "receive", error: "no cmd", msg });
182
+ return false;
183
+ }
184
+ return true;
185
+ }
186
+ async _onMessage(data) {
187
+ let time = Date.now();
188
+ let jsonData = data;
189
+ let func = this["receive_" + jsonData.cmd];
190
+ let ret = this.filterMsg(jsonData);
191
+ if (!ret) {
192
+ return;
193
+ }
194
+ else if (!func) {
195
+ let otherfunc = this["receive_other_all"];
196
+ if (otherfunc) {
197
+ await Core_1.core.safeCall(otherfunc, this, jsonData);
198
+ }
199
+ else {
200
+ Log_1.gLog.error(this.tipKey + ' Received Message warning: no cmd handle,cmd=' + jsonData.cmd);
201
+ }
202
+ }
203
+ else {
204
+ await Core_1.core.safeCall(func, this, jsonData);
205
+ }
206
+ if (this._debug_msg && !this._nodebugmsgs[jsonData.cmd]) {
207
+ Log_1.gLog.info("[" + (Date.now() - time) + "ms] " + jsonData.cmd);
208
+ }
209
+ }
210
+ onOpen(e) {
211
+ }
212
+ onError(e) {
213
+ }
214
+ onClose(reasonCode, description) {
215
+ Log_1.gLog.info(this.tipKey + " " + this._socket_id + ":onClose resonCode=" + reasonCode + " des=" + description);
216
+ }
217
+ filterSendMsg(msg) {
218
+ if (!this.connected) {
219
+ return false;
220
+ }
221
+ if (!msg) {
222
+ Log_1.gLog.error(this.tipKey + " Send Message warning:null data!");
223
+ return false;
224
+ }
225
+ if (this._debug_msg && !this._nodebugmsgs[msg.cmd]) {
226
+ Log_1.gLog.info({ tipKey: this.tipKey, action: "send", msg });
227
+ }
228
+ return true;
229
+ }
230
+ send(msg) {
231
+ let ret = this.filterSendMsg(msg);
232
+ if (!ret) {
233
+ return;
234
+ }
235
+ let data = this._onEncode(msg);
236
+ this._socket.write(this._packetParser.pack(data));
237
+ }
238
+ /**
239
+ * Close the connection. A close frame will be sent to the remote peer indicating
240
+ * that we wish to close the connection, and we will then wait for up to
241
+ * `config.closeTimeout` milliseconds for an acknowledgment from the remote peer
242
+ * before terminating the underlying socket connection.
243
+ */
244
+ close(reasonCode, description) {
245
+ this._socket.end();
246
+ }
247
+ /**
248
+ * Send a close frame to the remote peer and immediately close the socket without
249
+ * waiting for a response. This should generally be used only in error conditions.
250
+ */
251
+ drop(reasonCode, description, skipCloseFrame) {
252
+ this._socket.destroy();
253
+ }
254
+ }
255
+ exports.ISocket = ISocket;