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.
- package/README.md +2 -0
- package/dist/lib/Framework/{ThirdParty → Server/RpcWebSocketServer}/CgMq.js +11 -6
- package/dist/lib/Framework/{SocketServer → Server/RpcWebSocketServer}/IRpc.js +4 -2
- package/dist/lib/Framework/Server/RpcWebSocketServer/IRpcClientWebSocket.js +253 -0
- package/dist/lib/Framework/{SocketServer → Server/RpcWebSocketServer}/IRpcServerWebSocket.js +18 -7
- package/dist/lib/Framework/Server/SocketServer/IClientSocket.js +44 -0
- package/dist/lib/Framework/Server/SocketServer/IServerSocket.js +95 -0
- package/dist/lib/Framework/Server/SocketServer/ISocket.js +222 -0
- package/dist/lib/Framework/Server/SocketServer/ISocketServer.js +144 -0
- package/dist/lib/Framework/Server/SocketServer/PacketParser.js +40 -0
- package/dist/lib/Framework/{WebServer → Server/WebServer}/Controller/MongoBaseUserController.js +6 -6
- package/dist/lib/Framework/{WebServer → Server/WebServer}/Controller/MysqlBaseUserController.js +6 -6
- package/dist/lib/Framework/{WebServer → Server/WebServer}/Engine/Engine.js +2 -2
- package/dist/lib/Framework/{WebServer → Server/WebServer}/Engine/RazorJs.js +1 -1
- package/dist/lib/Framework/{WebServer → Server/WebServer}/Engine/Request.js +2 -2
- package/dist/lib/Framework/{WebServer → Server/WebServer}/Engine/Response.js +1 -1
- package/dist/lib/Framework/{WebServer → Server/WebServer}/IWebServer.js +4 -4
- package/dist/lib/Framework/{SocketServer → Server/WebSocketServer}/IClientWebSocket.js +2 -2
- package/dist/lib/Framework/{SocketServer → Server/WebSocketServer}/IServerWebSocket.js +2 -2
- package/dist/lib/Framework/{SocketServer → Server/WebSocketServer}/IWebSocket.js +5 -5
- package/dist/lib/Framework/{SocketServer/ISocketServer.js → Server/WebSocketServer/IWebSocketServer.js} +11 -8
- package/dist/lib/Framework/ThirdParty/Rpc.js +15 -6
- package/dist/lib/Framework/cgserver.js +21 -8
- package/dist/lib/Framework/global.js +2 -2
- package/dist/lib/Framework/index_export_.js +32 -21
- 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/{SocketServer → Server/RpcWebSocketServer}/IRpcClientWebSocket.d.ts +6 -1
- package/dist/types/Framework/{SocketServer → Server/RpcWebSocketServer}/IRpcServerWebSocket.d.ts +2 -2
- package/dist/types/Framework/{SocketServer/IClientWebSocket.d.ts → Server/SocketServer/IClientSocket.d.ts} +6 -5
- package/dist/types/Framework/Server/SocketServer/IServerSocket.d.ts +39 -0
- package/dist/types/Framework/Server/SocketServer/ISocket.d.ts +81 -0
- package/dist/types/Framework/Server/SocketServer/ISocketServer.d.ts +45 -0
- package/dist/types/Framework/Server/SocketServer/PacketParser.d.ts +10 -0
- package/dist/types/Framework/{WebServer → Server/WebServer}/Controller/BaseController.d.ts +1 -1
- package/dist/types/Framework/{WebServer → Server/WebServer}/Controller/MongoBaseUserController.d.ts +1 -1
- package/dist/types/Framework/{WebServer → Server/WebServer}/Controller/MysqlBaseUserController.d.ts +1 -1
- package/dist/types/Framework/{WebServer → Server/WebServer}/Engine/Engine.d.ts +1 -1
- package/dist/types/Framework/{WebServer → Server/WebServer}/Engine/Request.d.ts +1 -1
- package/dist/types/Framework/{WebServer → Server/WebServer}/Engine/Response.d.ts +1 -1
- package/dist/types/Framework/{WebServer → Server/WebServer}/IWebServer.d.ts +2 -2
- package/dist/types/Framework/Server/WebSocketServer/IClientWebSocket.d.ts +17 -0
- package/dist/types/Framework/{SocketServer → Server/WebSocketServer}/IServerWebSocket.d.ts +1 -1
- package/dist/types/Framework/{SocketServer → Server/WebSocketServer}/IWebSocket.d.ts +1 -1
- package/dist/types/Framework/{SocketServer/ISocketServer.d.ts → Server/WebSocketServer/IWebSocketServer.d.ts} +6 -3
- package/dist/types/Framework/ThirdParty/Rpc.d.ts +7 -5
- package/dist/types/Framework/cgserver.d.ts +7 -3
- package/dist/types/Framework/global.d.ts +2 -2
- package/dist/types/Framework/index_export_.d.ts +25 -20
- package/package.json +2 -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/SocketServer/IRpcClientWebSocket.js +0 -140
- package/dist/lib/Framework/ThirdParty/CgRankToo.js +0 -196
- 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/ThirdParty/CgRankToo.d.ts +0 -103
- /package/dist/lib/Framework/{SocketServer → Server}/ProtoFilter/GoogleProtoFilter.js +0 -0
- /package/dist/lib/Framework/{SocketServer → Server}/ProtoFilter/IProtoFilter.js +0 -0
- /package/dist/lib/Framework/{SocketServer → Server}/ProtoFilter/JsonProtoFilter.js +0 -0
- /package/dist/lib/Framework/{SocketServer → Server}/ProtoFilter/ProtoFactory.js +0 -0
- /package/dist/lib/Framework/{WebServer → Server/WebServer}/Controller/BaseController.js +0 -0
- /package/dist/lib/Framework/{WebServer → Server/WebServer}/Engine/ControllerManager.js +0 -0
- /package/dist/types/Framework/{SocketServer → Server}/ProtoFilter/GoogleProtoFilter.d.ts +0 -0
- /package/dist/types/Framework/{SocketServer → Server}/ProtoFilter/IProtoFilter.d.ts +0 -0
- /package/dist/types/Framework/{SocketServer → Server}/ProtoFilter/JsonProtoFilter.d.ts +0 -0
- /package/dist/types/Framework/{SocketServer → Server}/ProtoFilter/ProtoFactory.d.ts +0 -0
- /package/dist/types/Framework/{WebServer → Server/WebServer}/Engine/ControllerManager.d.ts +0 -0
- /package/dist/types/Framework/{WebServer → Server/WebServer}/Engine/RazorJs.d.ts +0 -0
package/README.md
CHANGED
|
@@ -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/{SocketServer → Server/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
|
|
6
|
-
const Log_1 = require("
|
|
7
|
-
const EventTool_1 = require("
|
|
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 =
|
|
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;
|
|
@@ -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;
|