cgserver 11.2.9 → 12.0.1

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 (73) hide show
  1. package/README.md +2 -0
  2. package/dist/lib/Framework/{ThirdParty → Server/RpcWebSocketServer}/CgMq.js +11 -6
  3. package/dist/lib/Framework/{SocketServer → Server/RpcWebSocketServer}/IRpc.js +4 -2
  4. package/dist/lib/Framework/Server/RpcWebSocketServer/IRpcClientWebSocket.js +253 -0
  5. package/dist/lib/Framework/{SocketServer → Server/RpcWebSocketServer}/IRpcServerWebSocket.js +18 -7
  6. package/dist/lib/Framework/Server/SocketServer/IClientSocket.js +44 -0
  7. package/dist/lib/Framework/Server/SocketServer/IServerSocket.js +95 -0
  8. package/dist/lib/Framework/Server/SocketServer/ISocket.js +222 -0
  9. package/dist/lib/Framework/Server/SocketServer/ISocketServer.js +144 -0
  10. package/dist/lib/Framework/Server/SocketServer/PacketParser.js +40 -0
  11. package/dist/lib/Framework/{WebServer → Server/WebServer}/Controller/MongoBaseUserController.js +6 -6
  12. package/dist/lib/Framework/{WebServer → Server/WebServer}/Controller/MysqlBaseUserController.js +6 -6
  13. package/dist/lib/Framework/{WebServer → Server/WebServer}/Engine/Engine.js +2 -2
  14. package/dist/lib/Framework/{WebServer → Server/WebServer}/Engine/RazorJs.js +1 -1
  15. package/dist/lib/Framework/{WebServer → Server/WebServer}/Engine/Request.js +2 -2
  16. package/dist/lib/Framework/{WebServer → Server/WebServer}/Engine/Response.js +1 -1
  17. package/dist/lib/Framework/{WebServer → Server/WebServer}/IWebServer.js +4 -4
  18. package/dist/lib/Framework/{SocketServer → Server/WebSocketServer}/IClientWebSocket.js +2 -2
  19. package/dist/lib/Framework/{SocketServer → Server/WebSocketServer}/IServerWebSocket.js +2 -2
  20. package/dist/lib/Framework/{SocketServer → Server/WebSocketServer}/IWebSocket.js +5 -5
  21. package/dist/lib/Framework/{SocketServer/ISocketServer.js → Server/WebSocketServer/IWebSocketServer.js} +11 -8
  22. package/dist/lib/Framework/ThirdParty/Rpc.js +15 -6
  23. package/dist/lib/Framework/cgserver.js +21 -8
  24. package/dist/lib/Framework/global.js +2 -2
  25. package/dist/lib/Framework/index_export_.js +32 -21
  26. package/dist/types/Framework/{ThirdParty → Server/RpcWebSocketServer}/CgMq.d.ts +4 -4
  27. package/dist/types/Framework/{SocketServer → Server/RpcWebSocketServer}/IRpc.d.ts +3 -2
  28. package/dist/types/Framework/{SocketServer → Server/RpcWebSocketServer}/IRpcClientWebSocket.d.ts +6 -1
  29. package/dist/types/Framework/{SocketServer → Server/RpcWebSocketServer}/IRpcServerWebSocket.d.ts +2 -2
  30. package/dist/types/Framework/{SocketServer/IClientWebSocket.d.ts → Server/SocketServer/IClientSocket.d.ts} +6 -5
  31. package/dist/types/Framework/Server/SocketServer/IServerSocket.d.ts +39 -0
  32. package/dist/types/Framework/Server/SocketServer/ISocket.d.ts +81 -0
  33. package/dist/types/Framework/Server/SocketServer/ISocketServer.d.ts +45 -0
  34. package/dist/types/Framework/Server/SocketServer/PacketParser.d.ts +10 -0
  35. package/dist/types/Framework/{WebServer → Server/WebServer}/Controller/BaseController.d.ts +1 -1
  36. package/dist/types/Framework/{WebServer → Server/WebServer}/Controller/MongoBaseUserController.d.ts +1 -1
  37. package/dist/types/Framework/{WebServer → Server/WebServer}/Controller/MysqlBaseUserController.d.ts +1 -1
  38. package/dist/types/Framework/{WebServer → Server/WebServer}/Engine/Engine.d.ts +1 -1
  39. package/dist/types/Framework/{WebServer → Server/WebServer}/Engine/Request.d.ts +1 -1
  40. package/dist/types/Framework/{WebServer → Server/WebServer}/Engine/Response.d.ts +1 -1
  41. package/dist/types/Framework/{WebServer → Server/WebServer}/IWebServer.d.ts +2 -2
  42. package/dist/types/Framework/Server/WebSocketServer/IClientWebSocket.d.ts +17 -0
  43. package/dist/types/Framework/{SocketServer → Server/WebSocketServer}/IServerWebSocket.d.ts +1 -1
  44. package/dist/types/Framework/{SocketServer → Server/WebSocketServer}/IWebSocket.d.ts +1 -1
  45. package/dist/types/Framework/{SocketServer/ISocketServer.d.ts → Server/WebSocketServer/IWebSocketServer.d.ts} +6 -3
  46. package/dist/types/Framework/ThirdParty/Rpc.d.ts +7 -5
  47. package/dist/types/Framework/cgserver.d.ts +7 -3
  48. package/dist/types/Framework/global.d.ts +2 -2
  49. package/dist/types/Framework/index_export_.d.ts +25 -20
  50. package/package.json +2 -1
  51. package/dist/lib/Framework/Database/MSSqlManager.js +0 -53
  52. package/dist/lib/Framework/Database/MysqlBaseService.js +0 -280
  53. package/dist/lib/Framework/Database/MysqlManager.js +0 -105
  54. package/dist/lib/Framework/Database/RedisManager.js +0 -60
  55. package/dist/lib/Framework/SocketServer/IRpcClientWebSocket.js +0 -140
  56. package/dist/lib/Framework/ThirdParty/CgRankToo.js +0 -196
  57. package/dist/types/Framework/Database/MSSqlManager.d.ts +0 -26
  58. package/dist/types/Framework/Database/MysqlBaseService.d.ts +0 -34
  59. package/dist/types/Framework/Database/MysqlManager.d.ts +0 -30
  60. package/dist/types/Framework/Database/RedisManager.d.ts +0 -24
  61. package/dist/types/Framework/ThirdParty/CgRankToo.d.ts +0 -103
  62. /package/dist/lib/Framework/{SocketServer → Server}/ProtoFilter/GoogleProtoFilter.js +0 -0
  63. /package/dist/lib/Framework/{SocketServer → Server}/ProtoFilter/IProtoFilter.js +0 -0
  64. /package/dist/lib/Framework/{SocketServer → Server}/ProtoFilter/JsonProtoFilter.js +0 -0
  65. /package/dist/lib/Framework/{SocketServer → Server}/ProtoFilter/ProtoFactory.js +0 -0
  66. /package/dist/lib/Framework/{WebServer → Server/WebServer}/Controller/BaseController.js +0 -0
  67. /package/dist/lib/Framework/{WebServer → Server/WebServer}/Engine/ControllerManager.js +0 -0
  68. /package/dist/types/Framework/{SocketServer → Server}/ProtoFilter/GoogleProtoFilter.d.ts +0 -0
  69. /package/dist/types/Framework/{SocketServer → Server}/ProtoFilter/IProtoFilter.d.ts +0 -0
  70. /package/dist/types/Framework/{SocketServer → Server}/ProtoFilter/JsonProtoFilter.d.ts +0 -0
  71. /package/dist/types/Framework/{SocketServer → Server}/ProtoFilter/ProtoFactory.d.ts +0 -0
  72. /package/dist/types/Framework/{WebServer → Server/WebServer}/Engine/ControllerManager.d.ts +0 -0
  73. /package/dist/types/Framework/{WebServer → Server/WebServer}/Engine/RazorJs.d.ts +0 -0
package/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ 12.0.0
2
+ 1、增加socketserver
1
3
  11.2.5
2
4
  1、Engine 增加app接口
3
5
  11.2.2
@@ -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("../SocketServer/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");
6
- const Log_1 = require("../Logic/Log");
7
- const EventTool_1 = require("../Logic/EventTool");
5
+ const IRpc_1 = require("./IRpc");
6
+ const Log_1 = require("../../Logic/Log");
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;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IClientSocket = void 0;
4
+ const Log_1 = require("../../Logic/Log");
5
+ const ISocket_1 = require("./ISocket");
6
+ const IProtoFilter_1 = require("../ProtoFilter/IProtoFilter");
7
+ /**
8
+ * 服务器接收到的客户端的连接
9
+ * 客户端的session对象
10
+ */
11
+ class IClientSocket extends ISocket_1.ISocket {
12
+ _server = null;
13
+ get server() {
14
+ return this._server;
15
+ }
16
+ constructor(server, protoType = IProtoFilter_1.EProtoType.Json, protoPath = "") {
17
+ super(protoType, protoPath);
18
+ this._server = server;
19
+ this._tipKey = this._server.name;
20
+ }
21
+ onClose(reasonCode, description) {
22
+ super.onClose(reasonCode, description);
23
+ this._server.removeServerSocketBySocketId(this._socket_id);
24
+ }
25
+ broadCast(data) {
26
+ if (!data) {
27
+ Log_1.gLog.info("Send Message warning:null data!");
28
+ return;
29
+ }
30
+ Log_1.gLog.info("broadCast:----------------------------------");
31
+ Log_1.gLog.info(data);
32
+ let msg = this._protoFilter.encode(data);
33
+ this._server.broadCast(msg);
34
+ }
35
+ _onDecode(message, ...params) {
36
+ let msg = super._onDecode(message, "msgReq");
37
+ return msg;
38
+ }
39
+ _onEncode(data, ...params) {
40
+ let msg = super._onEncode(data, "msgRes");
41
+ return msg;
42
+ }
43
+ }
44
+ exports.IClientSocket = IClientSocket;
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IServerSocket = void 0;
4
+ const ISocket_1 = require("./ISocket");
5
+ const ws = require("websocket");
6
+ const IProtoFilter_1 = require("../ProtoFilter/IProtoFilter");
7
+ const Log_1 = require("../../Logic/Log");
8
+ /**
9
+ * 连接到服务器的websocket
10
+ * 默认自动重连
11
+ */
12
+ class IServerSocket extends ISocket_1.ISocket {
13
+ _host = "";
14
+ /**
15
+ * 连接的服务器地址
16
+ */
17
+ get host() {
18
+ return this._host;
19
+ }
20
+ _port = -1;
21
+ /**
22
+ * 连接的服务器端口
23
+ */
24
+ get port() {
25
+ return this._port;
26
+ }
27
+ _requestedProtocols = null;
28
+ get requestedProtocols() {
29
+ return this._requestedProtocols;
30
+ }
31
+ _origin = null;
32
+ get origin() {
33
+ return this._origin;
34
+ }
35
+ _headers = null;
36
+ get headers() {
37
+ return this._headers;
38
+ }
39
+ _extraRequestOptions = null;
40
+ get extraRequestOptions() {
41
+ return this._extraRequestOptions;
42
+ }
43
+ _need_close = false;
44
+ constructor(protoType = IProtoFilter_1.EProtoType.Json, protoPath = "") {
45
+ super(protoType, protoPath);
46
+ }
47
+ connect(domain, port, requestedProtocols = null, origin = null, headers = null, extraRequestOptions = null) {
48
+ this._host = domain || this._host;
49
+ this._port = port || this._port;
50
+ this._requestedProtocols = requestedProtocols || this._requestedProtocols;
51
+ this._origin = origin || this._origin;
52
+ this._headers = headers || this._headers;
53
+ this._extraRequestOptions = extraRequestOptions || this._extraRequestOptions;
54
+ this._connect();
55
+ }
56
+ _connect() {
57
+ let url = "ws://" + this._host + ":" + this._port + "/";
58
+ Log_1.gLog.info("Trying to connect to server : " + url);
59
+ let _ws = new ws.client();
60
+ _ws.on("connect", this.onConnect.bind(this));
61
+ _ws.on("connectFailed", this.onClose.bind(this));
62
+ _ws.connect(url, this._requestedProtocols, this._origin, this._headers, this._extraRequestOptions);
63
+ }
64
+ onOpen(e) {
65
+ super.onOpen(e);
66
+ Log_1.gLog.info(this._socket_id + ":success to connect to " + this._host + ":" + this._port);
67
+ }
68
+ onClose(reasonCode, description) {
69
+ super.onClose(reasonCode, description);
70
+ if (!this._need_close) {
71
+ setTimeout(() => {
72
+ if (!this._need_close) {
73
+ this._connect();
74
+ }
75
+ }, 1000);
76
+ return true;
77
+ }
78
+ else {
79
+ return false;
80
+ }
81
+ }
82
+ close() {
83
+ this._need_close = true;
84
+ super.close();
85
+ }
86
+ _onDecode(message, ...params) {
87
+ let msg = super._onDecode(message, "msgRes");
88
+ return msg;
89
+ }
90
+ _onEncode(data, ...params) {
91
+ let msg = super._onEncode(data, "msgReq");
92
+ return msg;
93
+ }
94
+ }
95
+ exports.IServerSocket = IServerSocket;