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.
- package/dist/lib/Framework/{ThirdParty → Server/RpcWebSocketServer}/CgMq.js +11 -6
- package/dist/lib/Framework/Server/{WebSocketServer → RpcWebSocketServer}/IRpc.js +4 -2
- package/dist/lib/Framework/Server/RpcWebSocketServer/IRpcClientWebSocket.js +253 -0
- package/dist/lib/Framework/Server/{WebSocketServer → RpcWebSocketServer}/IRpcServerWebSocket.js +16 -5
- package/dist/lib/Framework/Server/SocketServer/ISocket.js +3 -3
- package/dist/lib/Framework/Server/SocketServer/ISocketServer.js +17 -17
- package/dist/lib/Framework/Server/WebSocketServer/IClientWebSocket.js +1 -1
- package/dist/lib/Framework/Server/WebSocketServer/IWebSocketServer.js +3 -0
- package/dist/lib/Framework/ThirdParty/Rpc.js +15 -6
- package/dist/lib/Framework/index_export_.js +4 -4
- package/dist/types/Framework/{ThirdParty → Server/RpcWebSocketServer}/CgMq.d.ts +4 -4
- package/dist/types/Framework/{SocketServer → Server/RpcWebSocketServer}/IRpc.d.ts +3 -2
- package/dist/types/Framework/Server/{WebSocketServer → RpcWebSocketServer}/IRpcClientWebSocket.d.ts +6 -1
- package/dist/types/Framework/{SocketServer → Server/RpcWebSocketServer}/IRpcServerWebSocket.d.ts +2 -2
- package/dist/types/Framework/Server/SocketServer/IClientSocket.d.ts +1 -0
- package/dist/types/Framework/Server/SocketServer/IServerSocket.d.ts +1 -0
- package/dist/types/Framework/Server/SocketServer/ISocket.d.ts +2 -1
- package/dist/types/Framework/Server/SocketServer/ISocketServer.d.ts +3 -3
- package/dist/types/Framework/Server/SocketServer/PacketParser.d.ts +1 -0
- package/dist/types/Framework/Server/WebSocketServer/IClientWebSocket.d.ts +2 -2
- package/dist/types/Framework/Server/WebSocketServer/IWebSocketServer.d.ts +4 -1
- package/dist/types/Framework/ThirdParty/Rpc.d.ts +7 -5
- package/dist/types/Framework/index_export_.d.ts +4 -4
- package/package.json +1 -1
- package/dist/lib/Framework/Database/MSSqlManager.js +0 -53
- package/dist/lib/Framework/Database/MysqlBaseService.js +0 -280
- package/dist/lib/Framework/Database/MysqlManager.js +0 -105
- package/dist/lib/Framework/Database/RedisManager.js +0 -60
- package/dist/lib/Framework/Server/WebSocketServer/IRpcClientWebSocket.js +0 -140
- package/dist/lib/Framework/SocketServer/IClientWebSocket.js +0 -44
- package/dist/lib/Framework/SocketServer/IRpc.js +0 -36
- package/dist/lib/Framework/SocketServer/IRpcClientWebSocket.js +0 -140
- package/dist/lib/Framework/SocketServer/IRpcServerWebSocket.js +0 -82
- package/dist/lib/Framework/SocketServer/IServerWebSocket.js +0 -95
- package/dist/lib/Framework/SocketServer/ISocketServer.js +0 -214
- package/dist/lib/Framework/SocketServer/IWebSocket.js +0 -215
- package/dist/lib/Framework/SocketServer/ProtoFilter/GoogleProtoFilter.js +0 -57
- package/dist/lib/Framework/SocketServer/ProtoFilter/IProtoFilter.js +0 -9
- package/dist/lib/Framework/SocketServer/ProtoFilter/JsonProtoFilter.js +0 -29
- package/dist/lib/Framework/SocketServer/ProtoFilter/ProtoFactory.js +0 -35
- package/dist/lib/Framework/ThirdParty/CgRankToo.js +0 -196
- package/dist/lib/Framework/WebServer/Controller/BaseController.js +0 -119
- package/dist/lib/Framework/WebServer/Controller/MongoBaseUserController.js +0 -171
- package/dist/lib/Framework/WebServer/Controller/MysqlBaseUserController.js +0 -169
- package/dist/lib/Framework/WebServer/Engine/ControllerManager.js +0 -115
- package/dist/lib/Framework/WebServer/Engine/Engine.js +0 -218
- package/dist/lib/Framework/WebServer/Engine/RazorJs.js +0 -543
- package/dist/lib/Framework/WebServer/Engine/Request.js +0 -226
- package/dist/lib/Framework/WebServer/Engine/Response.js +0 -87
- package/dist/lib/Framework/WebServer/IWebServer.js +0 -55
- package/dist/types/Framework/Database/MSSqlManager.d.ts +0 -26
- package/dist/types/Framework/Database/MysqlBaseService.d.ts +0 -34
- package/dist/types/Framework/Database/MysqlManager.d.ts +0 -30
- package/dist/types/Framework/Database/RedisManager.d.ts +0 -24
- package/dist/types/Framework/Server/WebSocketServer/IRpc.d.ts +0 -32
- package/dist/types/Framework/Server/WebSocketServer/IRpcServerWebSocket.d.ts +0 -23
- package/dist/types/Framework/SocketServer/IClientWebSocket.d.ts +0 -17
- package/dist/types/Framework/SocketServer/IRpcClientWebSocket.d.ts +0 -29
- package/dist/types/Framework/SocketServer/IServerWebSocket.d.ts +0 -38
- package/dist/types/Framework/SocketServer/ISocketServer.d.ts +0 -46
- package/dist/types/Framework/SocketServer/IWebSocket.d.ts +0 -76
- package/dist/types/Framework/SocketServer/ProtoFilter/GoogleProtoFilter.d.ts +0 -9
- package/dist/types/Framework/SocketServer/ProtoFilter/IProtoFilter.d.ts +0 -10
- package/dist/types/Framework/SocketServer/ProtoFilter/JsonProtoFilter.d.ts +0 -6
- package/dist/types/Framework/SocketServer/ProtoFilter/ProtoFactory.d.ts +0 -12
- package/dist/types/Framework/ThirdParty/CgRankToo.d.ts +0 -103
- package/dist/types/Framework/WebServer/Controller/BaseController.d.ts +0 -34
- package/dist/types/Framework/WebServer/Controller/MongoBaseUserController.d.ts +0 -28
- package/dist/types/Framework/WebServer/Controller/MysqlBaseUserController.d.ts +0 -27
- package/dist/types/Framework/WebServer/Engine/ControllerManager.d.ts +0 -37
- package/dist/types/Framework/WebServer/Engine/Engine.d.ts +0 -44
- package/dist/types/Framework/WebServer/Engine/RazorJs.d.ts +0 -21
- package/dist/types/Framework/WebServer/Engine/Request.d.ts +0 -50
- package/dist/types/Framework/WebServer/Engine/Response.d.ts +0 -26
- 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("
|
|
5
|
-
const
|
|
6
|
-
const
|
|
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("
|
|
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的服务器
|
|
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;
|
package/dist/lib/Framework/Server/{WebSocketServer → RpcWebSocketServer}/IRpcServerWebSocket.js
RENAMED
|
@@ -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
|
|
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 =
|
|
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.
|
|
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.
|
|
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(
|
|
113
|
+
onMessage(packet) {
|
|
114
114
|
try {
|
|
115
|
-
let msg = this._onDecode(
|
|
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
|
-
|
|
24
|
-
get
|
|
25
|
-
return this.
|
|
23
|
+
_server = null;
|
|
24
|
+
get server() {
|
|
25
|
+
return this._server;
|
|
26
26
|
}
|
|
27
27
|
//来自于用户的链接
|
|
28
|
-
|
|
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.
|
|
49
|
-
delete this.
|
|
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.
|
|
65
|
-
this.
|
|
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.
|
|
82
|
+
this._clients[ws_client.socketId] = ws_client;
|
|
83
83
|
}
|
|
84
84
|
initSocket(wss) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
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.
|
|
129
|
-
let ws = this.
|
|
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.
|
|
139
|
-
return this.
|
|
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对象
|
|
@@ -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("
|
|
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
|
-
|
|
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 =
|
|
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/
|
|
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("./
|
|
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/
|
|
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/
|
|
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 "
|
|
2
|
-
import { RpcMsg } from "
|
|
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 "
|
|
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的服务器
|
|
23
|
+
* 监听的对象,比如,发送给push服务器的,监听了10086的服务器listen="10086",listen,也可以理解为子group
|
|
23
24
|
*/
|
|
24
25
|
listen: string;
|
|
25
26
|
/**
|
package/dist/types/Framework/Server/{WebSocketServer → RpcWebSocketServer}/IRpcClientWebSocket.d.ts
RENAMED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IRpc, RpcMsg } from "./IRpc";
|
|
2
|
-
import { IClientWebSocket } from "
|
|
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
|
}
|
package/dist/types/Framework/{SocketServer → Server/RpcWebSocketServer}/IRpcServerWebSocket.d.ts
RENAMED
|
@@ -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
|
}
|