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,38 +1,38 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IRpc = exports.RpcMsg = void 0;
4
- const IWebSocket_1 = require("../WebSocketServer/IWebSocket");
5
- class RpcMsg extends IWebSocket_1.BaseMsg {
6
- __rpcid = "";
7
- __return = false;
8
- //mq消息不需要回复
9
- __is_mq = false;
10
- /**
11
- * 发送者分组
12
- */
13
- from_group = "";
14
- /**
15
- * 发送者分组下的某个具体对象id
16
- */
17
- from_id = "";
18
- /**
19
- * 必填,目的组
20
- */
21
- to_group = "";
22
- /**
23
- * 目的分组下的某个具体对象id
24
- */
25
- to_id = "";
26
- /**
27
- * 监听的对象,比如,发送给push服务器的,监听了10086的服务器listen="10086",listen,也可以理解为子group
28
- */
29
- listen = "";
30
- /**
31
- * 消息携带的数据
32
- */
33
- data = null;
34
- }
35
- exports.RpcMsg = RpcMsg;
36
- class IRpc {
37
- }
38
- exports.IRpc = IRpc;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IRpc = exports.RpcMsg = void 0;
4
+ const IWebSocket_1 = require("../WebSocketServer/IWebSocket");
5
+ class RpcMsg extends IWebSocket_1.BaseMsg {
6
+ __rpcid = "";
7
+ __return = false;
8
+ //mq消息不需要回复
9
+ __is_mq = false;
10
+ /**
11
+ * 发送者分组
12
+ */
13
+ from_group = "";
14
+ /**
15
+ * 发送者分组下的某个具体对象id
16
+ */
17
+ from_id = "";
18
+ /**
19
+ * 必填,目的组
20
+ */
21
+ to_group = "";
22
+ /**
23
+ * 目的分组下的某个具体对象id
24
+ */
25
+ to_id = "";
26
+ /**
27
+ * 监听的对象,比如,发送给push服务器的,监听了10086的服务器listen="10086",listen,也可以理解为子group
28
+ */
29
+ listen = "";
30
+ /**
31
+ * 消息携带的数据
32
+ */
33
+ data = null;
34
+ }
35
+ exports.RpcMsg = RpcMsg;
36
+ class IRpc {
37
+ }
38
+ exports.IRpc = IRpc;
@@ -1,253 +1,253 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IRpcClientWebSocket = void 0;
4
- const IRpc_1 = require("./IRpc");
5
- const IClientWebSocket_1 = require("../WebSocketServer/IClientWebSocket");
6
- const Core_1 = require("../../Core/Core");
7
- const Log_1 = require("../../Logic/Log");
8
- const EventTool_1 = require("../../Logic/EventTool");
9
- class IRpcClientWebSocket extends IClientWebSocket_1.IClientWebSocket {
10
- /**
11
- * 自己的身份
12
- */
13
- _group = "";
14
- _id = "";
15
- //超时时间
16
- _timeout = 3000;
17
- _listens = {};
18
- isListenning(listen) {
19
- if (!listen) {
20
- return true;
21
- }
22
- return !!this._listens[listen];
23
- }
24
- _genId(pre = "") {
25
- return pre + "_" + Core_1.core.getUuid();
26
- }
27
- getNewMsg(cmd, errcode) {
28
- let msg = new IRpc_1.RpcMsg(cmd, errcode);
29
- msg.__rpcid = this._genId(cmd);
30
- msg.__return = false;
31
- //mq消息不需要回复
32
- msg.__is_mq = false;
33
- msg.from_group = this._group;
34
- msg.from_id = this._id;
35
- msg.to_group = "";
36
- msg.to_id = "";
37
- msg.listen = "";
38
- return msg;
39
- }
40
- toRetMsg(req_msg, data, errcode) {
41
- let ret_msg = new IRpc_1.RpcMsg(req_msg.cmd, errcode);
42
- //唯一标识必须保持一致
43
- ret_msg.__rpcid = req_msg.__rpcid;
44
- ret_msg.__return = true;
45
- ret_msg.__is_mq = req_msg.__is_mq;
46
- ret_msg.from_group = this._group;
47
- ret_msg.from_id = this._id;
48
- ret_msg.to_group = req_msg.from_group;
49
- ret_msg.to_id = req_msg.from_id;
50
- ret_msg.data = data;
51
- return ret_msg;
52
- }
53
- async callRemote(msg) {
54
- if (!msg) {
55
- Log_1.gLog.error("send null msg!");
56
- return;
57
- }
58
- if (!msg.__rpcid) {
59
- msg.__rpcid = this._genId(msg.cmd);
60
- }
61
- if (msg.__is_mq) {
62
- //mq消息不需要回复
63
- this.send(msg);
64
- return;
65
- }
66
- return new Promise((resolve, reject) => {
67
- let handler = null;
68
- let func = (jsonData) => {
69
- if (handler) {
70
- clearTimeout(handler);
71
- handler = null;
72
- }
73
- resolve(jsonData);
74
- };
75
- handler = setTimeout(() => {
76
- EventTool_1.gEventTool.off(msg.__rpcid, func);
77
- resolve({ errcode: { id: 10086, des: "timeout" } });
78
- }, 3000);
79
- EventTool_1.gEventTool.once(msg.__rpcid, func);
80
- this.send(msg);
81
- });
82
- }
83
- receive_init(req_msg) {
84
- this._group = req_msg.from_group || "";
85
- this._id = req_msg.from_id || "";
86
- if (!req_msg.from_group) {
87
- let ret_msg = this.toRetMsg(req_msg, req_msg.data, { id: 10004, des: "初始化消息必须带有identity" });
88
- ret_msg.from_group = "cgrpc";
89
- ret_msg.from_id = "";
90
- this.send(ret_msg);
91
- return;
92
- }
93
- let ret_msg = this.toRetMsg(req_msg, null);
94
- ret_msg.from_group = "cgrpc";
95
- ret_msg.from_id = "";
96
- this.send(ret_msg);
97
- }
98
- receive_listen(req_msg) {
99
- let data = req_msg.data;
100
- if (!data || !Core_1.core.isArray(data)) {
101
- let ret_msg = this.toRetMsg(req_msg, req_msg.data, { id: 10005, des: "listen data not correct must be string[]" });
102
- ret_msg.from_group = "cgrpc";
103
- ret_msg.from_id = "";
104
- this.send(ret_msg);
105
- return;
106
- }
107
- for (let i = 0; i < data.length; i++) {
108
- let listen = data[i];
109
- if (!listen) {
110
- continue;
111
- }
112
- this._listens[listen] = true;
113
- }
114
- let ret_msg = this.toRetMsg(req_msg, null);
115
- ret_msg.from_group = "cgrpc";
116
- ret_msg.from_id = "";
117
- this.send(ret_msg);
118
- }
119
- receive_unlisten(req_msg) {
120
- let data = req_msg.data;
121
- if (!data || !Core_1.core.isArray(data)) {
122
- let ret_msg = this.toRetMsg(req_msg, req_msg.data, { id: 10005, des: "listen data not correct must be string[]" });
123
- ret_msg.from_group = "cgrpc";
124
- ret_msg.from_id = "";
125
- this.send(ret_msg);
126
- return;
127
- }
128
- for (let i = 0; i < data.length; i++) {
129
- let listen = data[i];
130
- if (!listen) {
131
- continue;
132
- }
133
- this._listens[listen] = undefined;
134
- delete this._listens[listen];
135
- }
136
- let ret_msg = this.toRetMsg(req_msg, null);
137
- ret_msg.from_group = "cgrpc";
138
- ret_msg.from_id = "";
139
- this.send(ret_msg);
140
- }
141
- receive_other_all(msg) {
142
- Log_1.gLog.error({ des: "no handle", msg });
143
- }
144
- async _onMessage(msg) {
145
- if (msg.__return) {
146
- let ret = this.filterMsg(msg);
147
- if (!ret) {
148
- return;
149
- }
150
- EventTool_1.gEventTool.emit(msg.__rpcid, msg);
151
- return;
152
- }
153
- super._onMessage(msg);
154
- }
155
- constructor(server) {
156
- super(server);
157
- this._debug_msg = true;
158
- this._group = "";
159
- this._id = Core_1.core.getUuid();
160
- }
161
- getWsByGroup(group, listen) {
162
- let wses = [];
163
- if (!group) {
164
- return wses;
165
- }
166
- let allClients = this.server.wsClients;
167
- for (let key in allClients) {
168
- let ct = allClients[key];
169
- if (ct._group == group && ct.isListenning(listen)) {
170
- wses.push(ct);
171
- }
172
- }
173
- return wses;
174
- }
175
- getWsByGroupId(group, id) {
176
- if (!group) {
177
- return null;
178
- }
179
- let allClients = this.server.wsClients;
180
- for (let key in allClients) {
181
- let ct = allClients[key];
182
- if (ct._group == group && ct._id == id) {
183
- return ct;
184
- }
185
- }
186
- return null;
187
- }
188
- async receive_msg(req_msg) {
189
- if (!req_msg.__rpcid) {
190
- //直接丢掉
191
- return;
192
- }
193
- if (!req_msg.to_group) {
194
- let ret_msg = this.toRetMsg(req_msg, req_msg.data, { id: 10002, des: "消息中必须附带接受方的身份to_group" });
195
- this.send(ret_msg);
196
- return;
197
- }
198
- let wses = [];
199
- if (req_msg.to_id) {
200
- let ws = this.getWsByGroupId(req_msg.to_group, req_msg.to_id);
201
- wses.push(ws);
202
- }
203
- else {
204
- wses = this.getWsByGroup(req_msg.to_group, req_msg.listen);
205
- }
206
- //发送给远程服务器的消息
207
- if (wses.length == 0) {
208
- req_msg.errcode = { id: 10004, des: "一个接收者都没找到" };
209
- req_msg.__return = true;
210
- this.send(req_msg);
211
- return;
212
- }
213
- let arets = [];
214
- let rpc_id = req_msg.__rpcid;
215
- let rpc_id_index = 0;
216
- for (let key in wses) {
217
- let ws = wses[key];
218
- req_msg.__rpcid = rpc_id + "_" + rpc_id_index;
219
- rpc_id_index++;
220
- let ret = ws.callRemote(req_msg);
221
- arets.push(ret);
222
- }
223
- if (req_msg.__is_mq) {
224
- //mq消息不需要回复
225
- return;
226
- }
227
- let rets = [];
228
- let first_ret = null;
229
- for (let key in arets) {
230
- let ret = await arets[key];
231
- rets.push(ret.data);
232
- if (!first_ret) {
233
- first_ret = ret;
234
- }
235
- }
236
- //还原rpc_id
237
- req_msg.__rpcid = rpc_id;
238
- //回复给调用来源的服务器
239
- let retMsg = this.toRetMsg(req_msg, rets);
240
- if (first_ret) {
241
- retMsg.from_group = req_msg.to_group;
242
- retMsg.to_group = req_msg.from_group;
243
- if (req_msg.to_id) {
244
- retMsg.from_id = first_ret.from_id;
245
- }
246
- else {
247
- retMsg.from_id = "";
248
- }
249
- }
250
- this.send(retMsg);
251
- }
252
- }
253
- exports.IRpcClientWebSocket = IRpcClientWebSocket;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IRpcClientWebSocket = void 0;
4
+ const IRpc_1 = require("./IRpc");
5
+ const IClientWebSocket_1 = require("../WebSocketServer/IClientWebSocket");
6
+ const Core_1 = require("../../Core/Core");
7
+ const Log_1 = require("../../Logic/Log");
8
+ const EventTool_1 = require("../../Logic/EventTool");
9
+ class IRpcClientWebSocket extends IClientWebSocket_1.IClientWebSocket {
10
+ /**
11
+ * 自己的身份
12
+ */
13
+ _group = "";
14
+ _id = "";
15
+ //超时时间
16
+ _timeout = 3000;
17
+ _listens = {};
18
+ isListenning(listen) {
19
+ if (!listen) {
20
+ return true;
21
+ }
22
+ return !!this._listens[listen];
23
+ }
24
+ _genId(pre = "") {
25
+ return pre + "_" + Core_1.core.getUuid();
26
+ }
27
+ getNewMsg(cmd, errcode) {
28
+ let msg = new IRpc_1.RpcMsg(cmd, errcode);
29
+ msg.__rpcid = this._genId(cmd);
30
+ msg.__return = false;
31
+ //mq消息不需要回复
32
+ msg.__is_mq = false;
33
+ msg.from_group = this._group;
34
+ msg.from_id = this._id;
35
+ msg.to_group = "";
36
+ msg.to_id = "";
37
+ msg.listen = "";
38
+ return msg;
39
+ }
40
+ toRetMsg(req_msg, data, errcode) {
41
+ let ret_msg = new IRpc_1.RpcMsg(req_msg.cmd, errcode);
42
+ //唯一标识必须保持一致
43
+ ret_msg.__rpcid = req_msg.__rpcid;
44
+ ret_msg.__return = true;
45
+ ret_msg.__is_mq = req_msg.__is_mq;
46
+ ret_msg.from_group = this._group;
47
+ ret_msg.from_id = this._id;
48
+ ret_msg.to_group = req_msg.from_group;
49
+ ret_msg.to_id = req_msg.from_id;
50
+ ret_msg.data = data;
51
+ return ret_msg;
52
+ }
53
+ async callRemote(msg) {
54
+ if (!msg) {
55
+ Log_1.gLog.error("send null msg!");
56
+ return;
57
+ }
58
+ if (!msg.__rpcid) {
59
+ msg.__rpcid = this._genId(msg.cmd);
60
+ }
61
+ if (msg.__is_mq) {
62
+ //mq消息不需要回复
63
+ this.send(msg);
64
+ return;
65
+ }
66
+ return new Promise((resolve, reject) => {
67
+ let handler = null;
68
+ let func = (jsonData) => {
69
+ if (handler) {
70
+ clearTimeout(handler);
71
+ handler = null;
72
+ }
73
+ resolve(jsonData);
74
+ };
75
+ handler = setTimeout(() => {
76
+ EventTool_1.gEventTool.off(msg.__rpcid, func);
77
+ resolve({ errcode: { id: 10086, des: "timeout" } });
78
+ }, 3000);
79
+ EventTool_1.gEventTool.once(msg.__rpcid, func);
80
+ this.send(msg);
81
+ });
82
+ }
83
+ receive_init(req_msg) {
84
+ this._group = req_msg.from_group || "";
85
+ this._id = req_msg.from_id || "";
86
+ if (!req_msg.from_group) {
87
+ let ret_msg = this.toRetMsg(req_msg, req_msg.data, { id: 10004, des: "初始化消息必须带有identity" });
88
+ ret_msg.from_group = "cgrpc";
89
+ ret_msg.from_id = "";
90
+ this.send(ret_msg);
91
+ return;
92
+ }
93
+ let ret_msg = this.toRetMsg(req_msg, null);
94
+ ret_msg.from_group = "cgrpc";
95
+ ret_msg.from_id = "";
96
+ this.send(ret_msg);
97
+ }
98
+ receive_listen(req_msg) {
99
+ let data = req_msg.data;
100
+ if (!data || !Core_1.core.isArray(data)) {
101
+ let ret_msg = this.toRetMsg(req_msg, req_msg.data, { id: 10005, des: "listen data not correct must be string[]" });
102
+ ret_msg.from_group = "cgrpc";
103
+ ret_msg.from_id = "";
104
+ this.send(ret_msg);
105
+ return;
106
+ }
107
+ for (let i = 0; i < data.length; i++) {
108
+ let listen = data[i];
109
+ if (!listen) {
110
+ continue;
111
+ }
112
+ this._listens[listen] = true;
113
+ }
114
+ let ret_msg = this.toRetMsg(req_msg, null);
115
+ ret_msg.from_group = "cgrpc";
116
+ ret_msg.from_id = "";
117
+ this.send(ret_msg);
118
+ }
119
+ receive_unlisten(req_msg) {
120
+ let data = req_msg.data;
121
+ if (!data || !Core_1.core.isArray(data)) {
122
+ let ret_msg = this.toRetMsg(req_msg, req_msg.data, { id: 10005, des: "listen data not correct must be string[]" });
123
+ ret_msg.from_group = "cgrpc";
124
+ ret_msg.from_id = "";
125
+ this.send(ret_msg);
126
+ return;
127
+ }
128
+ for (let i = 0; i < data.length; i++) {
129
+ let listen = data[i];
130
+ if (!listen) {
131
+ continue;
132
+ }
133
+ this._listens[listen] = undefined;
134
+ delete this._listens[listen];
135
+ }
136
+ let ret_msg = this.toRetMsg(req_msg, null);
137
+ ret_msg.from_group = "cgrpc";
138
+ ret_msg.from_id = "";
139
+ this.send(ret_msg);
140
+ }
141
+ receive_other_all(msg) {
142
+ Log_1.gLog.error({ des: "no handle", msg });
143
+ }
144
+ async _onMessage(msg) {
145
+ if (msg.__return) {
146
+ let ret = this.filterMsg(msg);
147
+ if (!ret) {
148
+ return;
149
+ }
150
+ EventTool_1.gEventTool.emit(msg.__rpcid, msg);
151
+ return;
152
+ }
153
+ super._onMessage(msg);
154
+ }
155
+ constructor(server) {
156
+ super(server);
157
+ this._debug_msg = true;
158
+ this._group = "";
159
+ this._id = Core_1.core.getUuid();
160
+ }
161
+ getWsByGroup(group, listen) {
162
+ let wses = [];
163
+ if (!group) {
164
+ return wses;
165
+ }
166
+ let allClients = this.server.wsClients;
167
+ for (let key in allClients) {
168
+ let ct = allClients[key];
169
+ if (ct._group == group && ct.isListenning(listen)) {
170
+ wses.push(ct);
171
+ }
172
+ }
173
+ return wses;
174
+ }
175
+ getWsByGroupId(group, id) {
176
+ if (!group) {
177
+ return null;
178
+ }
179
+ let allClients = this.server.wsClients;
180
+ for (let key in allClients) {
181
+ let ct = allClients[key];
182
+ if (ct._group == group && ct._id == id) {
183
+ return ct;
184
+ }
185
+ }
186
+ return null;
187
+ }
188
+ async receive_msg(req_msg) {
189
+ if (!req_msg.__rpcid) {
190
+ //直接丢掉
191
+ return;
192
+ }
193
+ if (!req_msg.to_group) {
194
+ let ret_msg = this.toRetMsg(req_msg, req_msg.data, { id: 10002, des: "消息中必须附带接受方的身份to_group" });
195
+ this.send(ret_msg);
196
+ return;
197
+ }
198
+ let wses = [];
199
+ if (req_msg.to_id) {
200
+ let ws = this.getWsByGroupId(req_msg.to_group, req_msg.to_id);
201
+ wses.push(ws);
202
+ }
203
+ else {
204
+ wses = this.getWsByGroup(req_msg.to_group, req_msg.listen);
205
+ }
206
+ //发送给远程服务器的消息
207
+ if (wses.length == 0) {
208
+ req_msg.errcode = { id: 10004, des: "一个接收者都没找到" };
209
+ req_msg.__return = true;
210
+ this.send(req_msg);
211
+ return;
212
+ }
213
+ let arets = [];
214
+ let rpc_id = req_msg.__rpcid;
215
+ let rpc_id_index = 0;
216
+ for (let key in wses) {
217
+ let ws = wses[key];
218
+ req_msg.__rpcid = rpc_id + "_" + rpc_id_index;
219
+ rpc_id_index++;
220
+ let ret = ws.callRemote(req_msg);
221
+ arets.push(ret);
222
+ }
223
+ if (req_msg.__is_mq) {
224
+ //mq消息不需要回复
225
+ return;
226
+ }
227
+ let rets = [];
228
+ let first_ret = null;
229
+ for (let key in arets) {
230
+ let ret = await arets[key];
231
+ rets.push(ret.data);
232
+ if (!first_ret) {
233
+ first_ret = ret;
234
+ }
235
+ }
236
+ //还原rpc_id
237
+ req_msg.__rpcid = rpc_id;
238
+ //回复给调用来源的服务器
239
+ let retMsg = this.toRetMsg(req_msg, rets);
240
+ if (first_ret) {
241
+ retMsg.from_group = req_msg.to_group;
242
+ retMsg.to_group = req_msg.from_group;
243
+ if (req_msg.to_id) {
244
+ retMsg.from_id = first_ret.from_id;
245
+ }
246
+ else {
247
+ retMsg.from_id = "";
248
+ }
249
+ }
250
+ this.send(retMsg);
251
+ }
252
+ }
253
+ exports.IRpcClientWebSocket = IRpcClientWebSocket;