cgserver 12.0.0 → 12.0.2

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 (75) hide show
  1. package/dist/lib/Framework/{ThirdParty → Server/RpcWebSocketServer}/CgMq.js +11 -6
  2. package/dist/lib/Framework/Server/{WebSocketServer → RpcWebSocketServer}/IRpc.js +4 -2
  3. package/dist/lib/Framework/Server/RpcWebSocketServer/IRpcClientWebSocket.js +253 -0
  4. package/dist/lib/Framework/Server/{WebSocketServer → RpcWebSocketServer}/IRpcServerWebSocket.js +16 -5
  5. package/dist/lib/Framework/Server/SocketServer/ISocket.js +3 -3
  6. package/dist/lib/Framework/Server/SocketServer/ISocketServer.js +17 -17
  7. package/dist/lib/Framework/Server/WebSocketServer/IClientWebSocket.js +1 -1
  8. package/dist/lib/Framework/Server/WebSocketServer/IWebSocketServer.js +3 -0
  9. package/dist/lib/Framework/ThirdParty/Rpc.js +15 -6
  10. package/dist/lib/Framework/index_export_.js +4 -4
  11. package/dist/types/Framework/{ThirdParty → Server/RpcWebSocketServer}/CgMq.d.ts +4 -4
  12. package/dist/types/Framework/{SocketServer → Server/RpcWebSocketServer}/IRpc.d.ts +3 -2
  13. package/dist/types/Framework/Server/{WebSocketServer → RpcWebSocketServer}/IRpcClientWebSocket.d.ts +6 -1
  14. package/dist/types/Framework/{SocketServer → Server/RpcWebSocketServer}/IRpcServerWebSocket.d.ts +2 -2
  15. package/dist/types/Framework/Server/SocketServer/IClientSocket.d.ts +1 -0
  16. package/dist/types/Framework/Server/SocketServer/IServerSocket.d.ts +1 -0
  17. package/dist/types/Framework/Server/SocketServer/ISocket.d.ts +2 -1
  18. package/dist/types/Framework/Server/SocketServer/ISocketServer.d.ts +3 -3
  19. package/dist/types/Framework/Server/SocketServer/PacketParser.d.ts +1 -0
  20. package/dist/types/Framework/Server/WebSocketServer/IClientWebSocket.d.ts +2 -2
  21. package/dist/types/Framework/Server/WebSocketServer/IWebSocketServer.d.ts +4 -1
  22. package/dist/types/Framework/ThirdParty/Rpc.d.ts +7 -5
  23. package/dist/types/Framework/index_export_.d.ts +4 -4
  24. package/package.json +1 -1
  25. package/dist/lib/Framework/Database/MSSqlManager.js +0 -53
  26. package/dist/lib/Framework/Database/MysqlBaseService.js +0 -280
  27. package/dist/lib/Framework/Database/MysqlManager.js +0 -105
  28. package/dist/lib/Framework/Database/RedisManager.js +0 -60
  29. package/dist/lib/Framework/Server/WebSocketServer/IRpcClientWebSocket.js +0 -140
  30. package/dist/lib/Framework/SocketServer/IClientWebSocket.js +0 -44
  31. package/dist/lib/Framework/SocketServer/IRpc.js +0 -36
  32. package/dist/lib/Framework/SocketServer/IRpcClientWebSocket.js +0 -140
  33. package/dist/lib/Framework/SocketServer/IRpcServerWebSocket.js +0 -82
  34. package/dist/lib/Framework/SocketServer/IServerWebSocket.js +0 -95
  35. package/dist/lib/Framework/SocketServer/ISocketServer.js +0 -214
  36. package/dist/lib/Framework/SocketServer/IWebSocket.js +0 -215
  37. package/dist/lib/Framework/SocketServer/ProtoFilter/GoogleProtoFilter.js +0 -57
  38. package/dist/lib/Framework/SocketServer/ProtoFilter/IProtoFilter.js +0 -9
  39. package/dist/lib/Framework/SocketServer/ProtoFilter/JsonProtoFilter.js +0 -29
  40. package/dist/lib/Framework/SocketServer/ProtoFilter/ProtoFactory.js +0 -35
  41. package/dist/lib/Framework/ThirdParty/CgRankToo.js +0 -196
  42. package/dist/lib/Framework/WebServer/Controller/BaseController.js +0 -119
  43. package/dist/lib/Framework/WebServer/Controller/MongoBaseUserController.js +0 -171
  44. package/dist/lib/Framework/WebServer/Controller/MysqlBaseUserController.js +0 -169
  45. package/dist/lib/Framework/WebServer/Engine/ControllerManager.js +0 -115
  46. package/dist/lib/Framework/WebServer/Engine/Engine.js +0 -218
  47. package/dist/lib/Framework/WebServer/Engine/RazorJs.js +0 -543
  48. package/dist/lib/Framework/WebServer/Engine/Request.js +0 -226
  49. package/dist/lib/Framework/WebServer/Engine/Response.js +0 -87
  50. package/dist/lib/Framework/WebServer/IWebServer.js +0 -55
  51. package/dist/types/Framework/Database/MSSqlManager.d.ts +0 -26
  52. package/dist/types/Framework/Database/MysqlBaseService.d.ts +0 -34
  53. package/dist/types/Framework/Database/MysqlManager.d.ts +0 -30
  54. package/dist/types/Framework/Database/RedisManager.d.ts +0 -24
  55. package/dist/types/Framework/Server/WebSocketServer/IRpc.d.ts +0 -32
  56. package/dist/types/Framework/Server/WebSocketServer/IRpcServerWebSocket.d.ts +0 -23
  57. package/dist/types/Framework/SocketServer/IClientWebSocket.d.ts +0 -17
  58. package/dist/types/Framework/SocketServer/IRpcClientWebSocket.d.ts +0 -29
  59. package/dist/types/Framework/SocketServer/IServerWebSocket.d.ts +0 -38
  60. package/dist/types/Framework/SocketServer/ISocketServer.d.ts +0 -46
  61. package/dist/types/Framework/SocketServer/IWebSocket.d.ts +0 -76
  62. package/dist/types/Framework/SocketServer/ProtoFilter/GoogleProtoFilter.d.ts +0 -9
  63. package/dist/types/Framework/SocketServer/ProtoFilter/IProtoFilter.d.ts +0 -10
  64. package/dist/types/Framework/SocketServer/ProtoFilter/JsonProtoFilter.d.ts +0 -6
  65. package/dist/types/Framework/SocketServer/ProtoFilter/ProtoFactory.d.ts +0 -12
  66. package/dist/types/Framework/ThirdParty/CgRankToo.d.ts +0 -103
  67. package/dist/types/Framework/WebServer/Controller/BaseController.d.ts +0 -34
  68. package/dist/types/Framework/WebServer/Controller/MongoBaseUserController.d.ts +0 -28
  69. package/dist/types/Framework/WebServer/Controller/MysqlBaseUserController.d.ts +0 -27
  70. package/dist/types/Framework/WebServer/Engine/ControllerManager.d.ts +0 -37
  71. package/dist/types/Framework/WebServer/Engine/Engine.d.ts +0 -44
  72. package/dist/types/Framework/WebServer/Engine/RazorJs.d.ts +0 -21
  73. package/dist/types/Framework/WebServer/Engine/Request.d.ts +0 -50
  74. package/dist/types/Framework/WebServer/Engine/Response.d.ts +0 -26
  75. package/dist/types/Framework/WebServer/IWebServer.d.ts +0 -22
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CgMq = exports.RpcConfig = void 0;
4
- const Core_1 = require("../Core/Core");
5
- const IRpcServerWebSocket_1 = require("../Server/WebSocketServer/IRpcServerWebSocket");
6
- const Log_1 = require("../Logic/Log");
4
+ const Core_1 = require("../../Core/Core");
5
+ const Log_1 = require("../../Logic/Log");
6
+ const IRpcServerWebSocket_1 = require("./IRpcServerWebSocket");
7
7
  class CgMqServerWebsocket extends IRpcServerWebSocket_1.IRpcServerWebSocket {
8
8
  _cgmq = null;
9
9
  _listens = {};
@@ -52,18 +52,23 @@ class CgMqServerWebsocket extends IRpcServerWebSocket_1.IRpcServerWebSocket {
52
52
  return jsonData;
53
53
  }
54
54
  //把消息发送给rpc服务器,目的是调用远程函数
55
- async push(to_group, data, to_id = "", listen = "") {
55
+ async push(to_group, data, to_id = "", listen = "", is_mq = false) {
56
56
  let msg = this.getNewMsg("msg");
57
57
  msg.to_group = to_group;
58
58
  msg.to_id = to_id;
59
59
  msg.data = data;
60
60
  msg.listen = listen;
61
+ msg.__is_mq = is_mq;
61
62
  let ret_rpcmsg = await this.callRemote(msg);
62
63
  return ret_rpcmsg;
63
64
  }
64
65
  //收到来自远程的调用消息
65
66
  async receive_msg(req_msg) {
66
67
  let data = await this._cgmq.onMsg(req_msg);
68
+ if (req_msg.__is_mq) {
69
+ //mq消息不需要回复
70
+ return;
71
+ }
67
72
  let ret_msg = this.toRetMsg(req_msg, data);
68
73
  this.send(ret_msg);
69
74
  }
@@ -146,13 +151,13 @@ class CgMq {
146
151
  }
147
152
  });
148
153
  }
149
- async callRemote(group, to_id, listen, func_name, ...args) {
154
+ async callRemote(group, to_id, listen, func_name, is_mq = false, ...args) {
150
155
  let time = Date.now();
151
156
  let data = {
152
157
  cmd: func_name,
153
158
  args: args
154
159
  };
155
- let ret_rpcmsg = await this._ws.push(group, data, to_id, listen);
160
+ let ret_rpcmsg = await this._ws.push(group, data, to_id, listen, is_mq);
156
161
  if (this._ws.debug_msg) {
157
162
  Log_1.gLog.info("[" + (Date.now() - time) + "ms] callRemote:" + group + "-" + func_name + "-" + listen);
158
163
  }
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IRpc = exports.RpcMsg = void 0;
4
- const IWebSocket_1 = require("./IWebSocket");
4
+ const IWebSocket_1 = require("../WebSocketServer/IWebSocket");
5
5
  class RpcMsg extends IWebSocket_1.BaseMsg {
6
6
  __rpcid = "";
7
7
  __return = false;
8
+ //mq消息不需要回复
9
+ __is_mq = false;
8
10
  /**
9
11
  * 发送者分组
10
12
  */
@@ -22,7 +24,7 @@ class RpcMsg extends IWebSocket_1.BaseMsg {
22
24
  */
23
25
  to_id = "";
24
26
  /**
25
- * 监听的对象,比如,发送给push服务器的,监听了10086的服务器listem="10086",listem,也可以理解为子group
27
+ * 监听的对象,比如,发送给push服务器的,监听了10086的服务器listen="10086",listen,也可以理解为子group
26
28
  */
27
29
  listen = "";
28
30
  /**
@@ -0,0 +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 = global.gCgServer.customprocessid;
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
+ let retMsg = this.getNewMsg("msg", { id: 10001, des: "非法rpc消息" });
191
+ this.send(retMsg);
192
+ return;
193
+ }
194
+ if (!req_msg.to_group) {
195
+ let ret_msg = this.toRetMsg(req_msg, req_msg.data, { id: 10002, des: "消息中必须附带接受方的身份to_group" });
196
+ this.send(ret_msg);
197
+ return;
198
+ }
199
+ let wses = [];
200
+ if (req_msg.to_id) {
201
+ let ws = this.getWsByGroupId(req_msg.to_group, req_msg.to_id);
202
+ wses.push(ws);
203
+ }
204
+ else {
205
+ wses = this.getWsByGroup(req_msg.to_group, req_msg.listen);
206
+ }
207
+ //发送给远程服务器的消息
208
+ if (wses.length == 0) {
209
+ req_msg.errcode = { id: 10004, des: "一个接收者都没找到" };
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;
@@ -2,9 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IRpcServerWebSocket = void 0;
4
4
  const _ = require("underscore");
5
- const IServerWebSocket_1 = require("./IServerWebSocket");
5
+ const IRpc_1 = require("./IRpc");
6
6
  const Log_1 = require("../../Logic/Log");
7
7
  const EventTool_1 = require("../../Logic/EventTool");
8
+ const IServerWebSocket_1 = require("../WebSocketServer/IServerWebSocket");
8
9
  class IRpcServerWebSocket extends IServerWebSocket_1.IServerWebSocket {
9
10
  /**
10
11
  * 自己的身份
@@ -23,28 +24,38 @@ class IRpcServerWebSocket extends IServerWebSocket_1.IServerWebSocket {
23
24
  return pre + "_" + Date.now() % 10000000000 + "_" + _.uniqueId() + _.random(9999999);
24
25
  }
25
26
  getNewMsg(cmd, errcode) {
26
- let msg = super.getNewMsg(cmd, errcode);
27
+ let msg = new IRpc_1.RpcMsg(cmd, errcode);
27
28
  msg.__rpcid = this._genId(cmd);
29
+ msg.__return = false;
30
+ msg.__is_mq = false;
28
31
  msg.from_group = this._group;
29
32
  msg.from_id = this._id;
33
+ msg.to_group = this._group;
34
+ msg.to_id = this._id;
30
35
  return msg;
31
36
  }
32
37
  toRetMsg(req_msg, data, errcode) {
33
38
  let ret_msg = this.getNewMsg(req_msg.cmd, errcode);
34
39
  //唯一标识必须保持一致
35
- ret_msg.__return = true;
36
40
  ret_msg.__rpcid = req_msg.__rpcid;
37
- ret_msg.data = data;
41
+ ret_msg.__return = true;
42
+ ret_msg.__is_mq = req_msg.__is_mq;
38
43
  ret_msg.from_group = this._group;
39
44
  ret_msg.from_id = this._id;
40
45
  ret_msg.to_group = req_msg.from_group;
41
46
  ret_msg.to_id = req_msg.from_id;
47
+ ret_msg.data = data;
42
48
  return ret_msg;
43
49
  }
44
50
  async callRemote(msg) {
45
51
  if (!msg) {
46
52
  Log_1.gLog.error("send null msg!");
47
- return;
53
+ return null;
54
+ }
55
+ if (msg.__is_mq) {
56
+ //mq消息不需要回复
57
+ this.send(msg);
58
+ return null;
48
59
  }
49
60
  return new Promise((resolve, reject) => {
50
61
  let handler = null;
@@ -102,7 +102,7 @@ class ISocket {
102
102
  this._packetParser.push(message);
103
103
  let packet = this._packetParser.parse();
104
104
  while (packet) {
105
- this._onMessage(packet);
105
+ this.onMessage(packet);
106
106
  packet = this._packetParser.parse();
107
107
  }
108
108
  }
@@ -110,9 +110,9 @@ class ISocket {
110
110
  Log_1.gLog.error(this.tipKey + ' Received Message Handle Error: ' + e);
111
111
  }
112
112
  }
113
- onMessage(message) {
113
+ onMessage(packet) {
114
114
  try {
115
- let msg = this._onDecode(message);
115
+ let msg = this._onDecode(packet);
116
116
  if (this._is_sync_msg) {
117
117
  SyncQueueTool_1.gSyncQueueTool.add(this._socket_id + "", this._onMessage, this, msg);
118
118
  }
@@ -20,12 +20,12 @@ class ISocketServer {
20
20
  return this._cfg.serverName;
21
21
  }
22
22
  //监听websocket
23
- _listening_socket = null;
24
- get listeningSocket() {
25
- return this._listening_socket;
23
+ _server = null;
24
+ get server() {
25
+ return this._server;
26
26
  }
27
27
  //来自于用户的链接
28
- _ws_clients = {};
28
+ _clients = {};
29
29
  get listenPort() {
30
30
  return this._cfg.port;
31
31
  }
@@ -45,8 +45,8 @@ class ISocketServer {
45
45
  this._cfg = cfg;
46
46
  }
47
47
  removeServerSocketBySocketId(socketId) {
48
- this._ws_clients[socketId] = null;
49
- delete this._ws_clients[socketId];
48
+ this._clients[socketId] = null;
49
+ delete this._clients[socketId];
50
50
  }
51
51
  async run() {
52
52
  cgserver_1.gCgServer.addSocketServer(this);
@@ -61,8 +61,8 @@ class ISocketServer {
61
61
  return;
62
62
  }
63
63
  this._is_runging = false;
64
- for (let key in this._ws_clients) {
65
- this._ws_clients[key].close();
64
+ for (let key in this._clients) {
65
+ this._clients[key].close();
66
66
  }
67
67
  Log_1.gLog.info("socketserver paused:" + this._cfg.port);
68
68
  }
@@ -79,13 +79,13 @@ class ISocketServer {
79
79
  方便统计,广播等
80
80
  */
81
81
  addClient(ws_client) {
82
- this._ws_clients[ws_client.socketId] = ws_client;
82
+ this._clients[ws_client.socketId] = ws_client;
83
83
  }
84
84
  initSocket(wss) {
85
- let server = net.createServer();
86
- server.listen(this._cfg.port, this.onListenning.bind(this));
87
- server.on("connection", this.onConnection.bind(this));
88
- this._listening_socket.on('close', this.onClose.bind(this));
85
+ this._server = net.createServer();
86
+ this._server.listen(this._cfg.port, this.onListenning.bind(this));
87
+ this._server.on("connection", this.onConnection.bind(this));
88
+ this._server.on('close', this.onClose.bind(this));
89
89
  }
90
90
  onClose() {
91
91
  }
@@ -125,8 +125,8 @@ class ISocketServer {
125
125
  * @param msg
126
126
  */
127
127
  broadCast(msg) {
128
- for (var key in this._ws_clients) {
129
- let ws = this._ws_clients[key];
128
+ for (var key in this._clients) {
129
+ let ws = this._clients[key];
130
130
  ws.send(msg);
131
131
  }
132
132
  }
@@ -135,8 +135,8 @@ class ISocketServer {
135
135
  * @returns
136
136
  */
137
137
  getAnyWebSocket() {
138
- for (var key in this._ws_clients) {
139
- return this._ws_clients[key];
138
+ for (var key in this._clients) {
139
+ return this._clients[key];
140
140
  }
141
141
  return null;
142
142
  }
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IClientWebSocket = void 0;
4
4
  const Log_1 = require("../../Logic/Log");
5
- const IWebSocket_1 = require("./IWebSocket");
6
5
  const IProtoFilter_1 = require("../ProtoFilter/IProtoFilter");
6
+ const IWebSocket_1 = require("./IWebSocket");
7
7
  /**
8
8
  * 服务器接收到的客户端的连接
9
9
  * 客户端的session对象
@@ -30,6 +30,9 @@ class IWebSocketServer {
30
30
  }
31
31
  //来自于用户的链接
32
32
  _ws_clients = {};
33
+ get wsClients() {
34
+ return this._ws_clients;
35
+ }
33
36
  get listenPort() {
34
37
  return this._cfg.port;
35
38
  }
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Rpc = void 0;
4
4
  const Core_1 = require("../Core/Core");
5
5
  const Log_1 = require("../Logic/Log");
6
- const CgMq_1 = require("./CgMq");
6
+ const CgMq_1 = require("../Server/RpcWebSocketServer/CgMq");
7
7
  class Remote {
8
8
  _retmsg = null;
9
9
  get retMsg() {
@@ -16,15 +16,20 @@ class Remote {
16
16
  _to_group = "";
17
17
  _to_id = "";
18
18
  _listen = "";
19
- constructor(group, id, cgmq, listen) {
19
+ _is_mq = false;
20
+ constructor(group, id, cgmq, listen, is_mq = false) {
20
21
  this._to_group = group;
21
22
  this._to_id = id;
22
23
  this._listen = listen;
24
+ this._is_mq = is_mq;
23
25
  this._cgmq = cgmq;
24
26
  }
25
27
  async call(func_name, ...args) {
26
- this._retmsg = await this._cgmq.callRemote(this._to_group, this._to_id, this._listen, func_name, ...args);
27
- let datas = this._retmsg.data;
28
+ this._retmsg = await this._cgmq.callRemote(this._to_group, this._to_id, this._listen, func_name, this._is_mq, ...args);
29
+ let datas = [];
30
+ if (this._retmsg) {
31
+ datas = this._retmsg.data;
32
+ }
28
33
  let ret = { rets: datas, ret: null };
29
34
  if (datas && datas.length > 0) {
30
35
  ret.ret = datas[0];
@@ -42,8 +47,12 @@ class Rpc {
42
47
  let ret = await this._cgmq.init(cfg, this.onMsg.bind(this));
43
48
  return ret;
44
49
  }
45
- getRemote(group, id = "", listener = "") {
46
- return new Remote(group, id, this._cgmq, listener);
50
+ getRemote(group, id = "", listener = "", is_mq = false) {
51
+ return new Remote(group, id, this._cgmq, listener, is_mq);
52
+ }
53
+ //mq消息不需要回复
54
+ getRemoteMq(group, id = "", listener = "") {
55
+ return this.getRemote(group, id, listener, true);
47
56
  }
48
57
  async onMsg(msg) {
49
58
  if (!msg || !msg.data || !msg.data.cmd) {
@@ -156,16 +156,16 @@ var ISocketServer_1 = require("./Server/SocketServer/ISocketServer");
156
156
  Object.defineProperty(exports, "ISocketServer", { enumerable: true, get: function () { return ISocketServer_1.ISocketServer; } });
157
157
  var PacketParser_1 = require("./Server/SocketServer/PacketParser");
158
158
  Object.defineProperty(exports, "PacketParser", { enumerable: true, get: function () { return PacketParser_1.PacketParser; } });
159
- var IRpc_1 = require("./Server/WebSocketServer/IRpc");
159
+ var IRpc_1 = require("./Server/RpcWebSocketServer/IRpc");
160
160
  Object.defineProperty(exports, "RpcBaseMsg", { enumerable: true, get: function () { return IRpc_1.RpcMsg; } });
161
161
  var Rpc_1 = require("./ThirdParty/Rpc");
162
162
  Object.defineProperty(exports, "Rpc", { enumerable: true, get: function () { return Rpc_1.Rpc; } });
163
- var CgMq_1 = require("./ThirdParty/CgMq");
163
+ var CgMq_1 = require("./Server/RpcWebSocketServer/CgMq");
164
164
  Object.defineProperty(exports, "CgMq", { enumerable: true, get: function () { return CgMq_1.CgMq; } });
165
165
  Object.defineProperty(exports, "RpcConfig", { enumerable: true, get: function () { return CgMq_1.RpcConfig; } });
166
- var IRpcServerWebSocket_1 = require("./Server/WebSocketServer/IRpcServerWebSocket");
166
+ var IRpcServerWebSocket_1 = require("./Server/RpcWebSocketServer/IRpcServerWebSocket");
167
167
  Object.defineProperty(exports, "IRpcServerWebSocket", { enumerable: true, get: function () { return IRpcServerWebSocket_1.IRpcServerWebSocket; } });
168
- var IRpcClientWebSocket_1 = require("./Server/WebSocketServer/IRpcClientWebSocket");
168
+ var IRpcClientWebSocket_1 = require("./Server/RpcWebSocketServer/IRpcClientWebSocket");
169
169
  Object.defineProperty(exports, "IRpcClientWebSocket", { enumerable: true, get: function () { return IRpcClientWebSocket_1.IRpcClientWebSocket; } });
170
170
  var SyncCall_1 = require("./Decorator/SyncCall");
171
171
  Object.defineProperty(exports, "SyncCall", { enumerable: true, get: function () { return SyncCall_1.SyncCall; } });
@@ -1,5 +1,5 @@
1
- import { IRpcServerWebSocket } from "../Server/WebSocketServer/IRpcServerWebSocket";
2
- import { RpcMsg } from "../Server/WebSocketServer/IRpc";
1
+ import { IRpcServerWebSocket } from "./IRpcServerWebSocket";
2
+ import { RpcMsg } from "./IRpc";
3
3
  declare class CgMqServerWebsocket extends IRpcServerWebSocket {
4
4
  protected _cgmq: CgMq;
5
5
  protected _listens: {
@@ -13,7 +13,7 @@ declare class CgMqServerWebsocket extends IRpcServerWebSocket {
13
13
  init(): Promise<RpcMsg>;
14
14
  listen(data: string[]): Promise<RpcMsg>;
15
15
  unlisten(data: string[]): Promise<RpcMsg>;
16
- push(to_group: string, data: any, to_id?: string, listen?: string): Promise<RpcMsg>;
16
+ push(to_group: string, data: any, to_id?: string, listen?: string, is_mq?: boolean): Promise<RpcMsg | null>;
17
17
  receive_msg(req_msg: RpcMsg): Promise<void>;
18
18
  }
19
19
  export declare class RpcConfig {
@@ -51,7 +51,7 @@ export declare class CgMq {
51
51
  * @returns
52
52
  */
53
53
  init(cfg: RpcConfig, onmsg?: (msg: RpcMsg) => any): Promise<boolean>;
54
- callRemote(group: string, to_id: string, listen: string, func_name: string, ...args: any[]): Promise<RpcMsg>;
54
+ callRemote(group: string, to_id: string, listen: string, func_name: string, is_mq?: boolean, ...args: any[]): Promise<RpcMsg | null>;
55
55
  onMsg(msg: RpcMsg): Promise<any>;
56
56
  listen(data: string[]): Promise<RpcMsg>;
57
57
  unlisten(data: string[]): Promise<RpcMsg>;
@@ -1,7 +1,8 @@
1
- import { BaseMsg } from "./IWebSocket";
1
+ import { BaseMsg } from "../WebSocketServer/IWebSocket";
2
2
  export declare class RpcMsg extends BaseMsg {
3
3
  __rpcid: string;
4
4
  __return: boolean;
5
+ __is_mq: boolean;
5
6
  /**
6
7
  * 发送者分组
7
8
  */
@@ -19,7 +20,7 @@ export declare class RpcMsg extends BaseMsg {
19
20
  */
20
21
  to_id: string;
21
22
  /**
22
- * 监听的对象,比如,发送给push服务器的,监听了10086的服务器listem="10086",listem,也可以理解为子group
23
+ * 监听的对象,比如,发送给push服务器的,监听了10086的服务器listen="10086",listen,也可以理解为子group
23
24
  */
24
25
  listen: string;
25
26
  /**
@@ -1,5 +1,6 @@
1
1
  import { IRpc, RpcMsg } from "./IRpc";
2
- import { IClientWebSocket } from "./IClientWebSocket";
2
+ import { IClientWebSocket } from "../WebSocketServer/IClientWebSocket";
3
+ import { IWebSocketServer } from "../WebSocketServer/IWebSocketServer";
3
4
  export declare class IRpcClientWebSocket extends IClientWebSocket implements IRpc {
4
5
  /**
5
6
  * 自己的身份
@@ -26,4 +27,8 @@ export declare class IRpcClientWebSocket extends IClientWebSocket implements IRp
26
27
  receive_unlisten(req_msg: RpcMsg): void;
27
28
  receive_other_all(msg: RpcMsg): void;
28
29
  protected _onMessage(msg: RpcMsg): Promise<void>;
30
+ constructor(server: IWebSocketServer);
31
+ getWsByGroup(group: string, listen: string): IRpcClientWebSocket[];
32
+ getWsByGroupId(group: string, id: string): IRpcClientWebSocket;
33
+ receive_msg(req_msg: RpcMsg): Promise<void>;
29
34
  }
@@ -1,5 +1,5 @@
1
- import { IServerWebSocket } from "./IServerWebSocket";
2
1
  import { IRpc, RpcMsg } from "./IRpc";
2
+ import { IServerWebSocket } from "../WebSocketServer/IServerWebSocket";
3
3
  export declare class IRpcServerWebSocket extends IServerWebSocket implements IRpc {
4
4
  /**
5
5
  * 自己的身份
@@ -17,7 +17,7 @@ export declare class IRpcServerWebSocket extends IServerWebSocket implements IRp
17
17
  id: number;
18
18
  des: string;
19
19
  }): RpcMsg;
20
- callRemote(msg: RpcMsg): Promise<RpcMsg>;
20
+ callRemote(msg: RpcMsg): Promise<RpcMsg | null>;
21
21
  receive_other_all(msg: RpcMsg): void;
22
22
  protected _onMessage(msg: RpcMsg): Promise<void>;
23
23
  }
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  import { ISocketServer } from './ISocketServer';
3
4
  import { ISocket } from './ISocket';
4
5
  import { EProtoType } from '../ProtoFilter/IProtoFilter';
@@ -1,5 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
+ /// <reference types="node" />
3
4
  import { ISocket } from './ISocket';
4
5
  import { EProtoType } from '../ProtoFilter/IProtoFilter';
5
6
  import * as http from "http";