melo-sample-websocket-chat-game-server 1.7.6
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/.vscode/launch.json +45 -0
- package/LICENSE +21 -0
- package/app/servers/chat/handler/chatHandler.ts +45 -0
- package/app/servers/chat/lifecycle.ts +27 -0
- package/app/servers/chat/remote/chatRemote.ts +105 -0
- package/app/servers/connector/handler/entryHandler.ts +63 -0
- package/app/servers/connector/lifecycle.ts +27 -0
- package/app/servers/gate/handler/gateHandler.ts +41 -0
- package/app/util/dispatcher.ts +7 -0
- package/app/util/routeUtil.ts +16 -0
- package/app.ts +70 -0
- package/ci-test.js +44 -0
- package/dist/app/servers/chat/handler/chatHandler.js +45 -0
- package/dist/app/servers/chat/lifecycle.js +24 -0
- package/dist/app/servers/chat/remote/chatRemote.js +92 -0
- package/dist/app/servers/connector/handler/entryHandler.js +59 -0
- package/dist/app/servers/connector/lifecycle.js +24 -0
- package/dist/app/servers/gate/handler/gateHandler.js +44 -0
- package/dist/app/util/dispatcher.js +10 -0
- package/dist/app/util/routeUtil.js +15 -0
- package/dist/app.js +60 -0
- package/dist/config/adminServer.json +11 -0
- package/dist/config/adminUser.json +17 -0
- package/dist/config/clientProtos.json +6 -0
- package/dist/config/dictionary.json +3 -0
- package/dist/config/log4js.json +150 -0
- package/dist/config/master.json +14 -0
- package/dist/config/serverProtos.json +9 -0
- package/dist/config/servers.json +28 -0
- package/dist/preload.js +41 -0
- package/dist/robot/robot.js +84 -0
- package/package.json +34 -0
- package/preload.ts +40 -0
- package/robot/robot.ts +97 -0
- package/tsconfig.json +34 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChatRemote = void 0;
|
|
4
|
+
function default_1(app) {
|
|
5
|
+
return new ChatRemote(app);
|
|
6
|
+
}
|
|
7
|
+
exports.default = default_1;
|
|
8
|
+
// 如果有多个remote文件。需要在各自的remote文件内定义rpc的话。可以这样定义,解决定义被覆盖的问题。
|
|
9
|
+
/**
|
|
10
|
+
// UserRpc的命名空间自动合并
|
|
11
|
+
declare global {
|
|
12
|
+
interface RemoterChat {
|
|
13
|
+
chatRemote: RemoterClass<FrontendSession, ChatRemote>;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
interface UserRpc {
|
|
17
|
+
chat: RemoterChat;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
*/
|
|
22
|
+
class ChatRemote {
|
|
23
|
+
constructor(app) {
|
|
24
|
+
this.app = app;
|
|
25
|
+
this.app = app;
|
|
26
|
+
this.channelService = app.get('channelService');
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Add user into chat channel.
|
|
30
|
+
*
|
|
31
|
+
* @param {String} uid unique id for user
|
|
32
|
+
* @param {String} sid server id
|
|
33
|
+
* @param {String} name channel name
|
|
34
|
+
* @param {boolean} flag channel parameter
|
|
35
|
+
*
|
|
36
|
+
*/
|
|
37
|
+
async add(uid, sid, name, flag) {
|
|
38
|
+
let channel = this.channelService.getChannel(name, flag);
|
|
39
|
+
let username = uid.split('*')[0];
|
|
40
|
+
let param = {
|
|
41
|
+
user: username
|
|
42
|
+
};
|
|
43
|
+
console.log('send on add', param);
|
|
44
|
+
channel.pushMessage('onAdd', param);
|
|
45
|
+
if (!!channel) {
|
|
46
|
+
channel.add(uid, sid);
|
|
47
|
+
}
|
|
48
|
+
return this.get(name, flag);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get user from chat channel.
|
|
52
|
+
*
|
|
53
|
+
* @param {Object} opts parameters for request
|
|
54
|
+
* @param {String} name channel name
|
|
55
|
+
* @param {boolean} flag channel parameter
|
|
56
|
+
* @return {Array} users uids in channel
|
|
57
|
+
*
|
|
58
|
+
*/
|
|
59
|
+
get(name, flag) {
|
|
60
|
+
let users = [];
|
|
61
|
+
let channel = this.channelService.getChannel(name, flag);
|
|
62
|
+
if (!!channel) {
|
|
63
|
+
users = channel.getMembers();
|
|
64
|
+
}
|
|
65
|
+
for (let i = 0; i < users.length; i++) {
|
|
66
|
+
users[i] = users[i].split('*')[0];
|
|
67
|
+
}
|
|
68
|
+
return users;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Kick user out chat channel.
|
|
72
|
+
*
|
|
73
|
+
* @param {String} uid unique id for user
|
|
74
|
+
* @param {String} sid server id
|
|
75
|
+
* @param {String} name channel name
|
|
76
|
+
*
|
|
77
|
+
*/
|
|
78
|
+
async kick(uid, sid, name) {
|
|
79
|
+
let channel = this.channelService.getChannel(name, false);
|
|
80
|
+
// leave channel
|
|
81
|
+
if (!!channel) {
|
|
82
|
+
channel.leave(uid, sid);
|
|
83
|
+
}
|
|
84
|
+
let username = uid.split('*')[0];
|
|
85
|
+
let param = {
|
|
86
|
+
user: username
|
|
87
|
+
};
|
|
88
|
+
channel.pushMessage('onLeave', param);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.ChatRemote = ChatRemote;
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdFJlbW90ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2FwcC9zZXJ2ZXJzL2NoYXQvcmVtb3RlL2NoYXRSZW1vdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsbUJBQXlCLEdBQWdCO0lBQ3JDLE9BQU8sSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQUZELDRCQUVDO0FBV0QsMERBQTBEO0FBQzFEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQWEsVUFBVTtJQUVuQixZQUFvQixHQUFnQjtRQUFoQixRQUFHLEdBQUgsR0FBRyxDQUFhO1FBQ2hDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUlEOzs7Ozs7OztPQVFHO0lBQ0ksS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFXLEVBQUUsR0FBVyxFQUFFLElBQVksRUFBRSxJQUFhO1FBQ2xFLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6RCxJQUFJLFFBQVEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksS0FBSyxHQUFHO1lBQ1IsSUFBSSxFQUFFLFFBQVE7U0FDakIsQ0FBQztRQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXBDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRTtZQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO1FBRUQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSyxHQUFHLENBQUMsSUFBWSxFQUFFLElBQWE7UUFDbkMsSUFBSSxLQUFLLEdBQWEsRUFBRSxDQUFDO1FBQ3pCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUU7WUFDWCxLQUFLLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ2hDO1FBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDckM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBVyxFQUFFLEdBQVcsRUFBRSxJQUFZO1FBQ3BELElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxRCxnQkFBZ0I7UUFDaEIsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO1lBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDM0I7UUFDRCxJQUFJLFFBQVEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksS0FBSyxHQUFHO1lBQ1IsSUFBSSxFQUFFLFFBQVE7U0FDakIsQ0FBQztRQUNGLE9BQU8sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDSjtBQTNFRCxnQ0EyRUMifQ==
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EntryHandler = void 0;
|
|
4
|
+
function default_1(app) {
|
|
5
|
+
return new EntryHandler(app);
|
|
6
|
+
}
|
|
7
|
+
exports.default = default_1;
|
|
8
|
+
class EntryHandler {
|
|
9
|
+
constructor(app) {
|
|
10
|
+
this.app = app;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* New client entry chat server.
|
|
14
|
+
*
|
|
15
|
+
* @param {Object} msg request message
|
|
16
|
+
* @param {Object} session current session object
|
|
17
|
+
*/
|
|
18
|
+
async enter(msg, session) {
|
|
19
|
+
let self = this;
|
|
20
|
+
let rid = msg.rid;
|
|
21
|
+
let uid = msg.username + '*' + rid;
|
|
22
|
+
let sessionService = self.app.get('sessionService');
|
|
23
|
+
// duplicate log in
|
|
24
|
+
if (!!sessionService.getByUid(uid)) {
|
|
25
|
+
return {
|
|
26
|
+
code: 500,
|
|
27
|
+
error: true
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
await session.abind(uid);
|
|
31
|
+
session.set('rid', rid);
|
|
32
|
+
session.push('rid', function (err) {
|
|
33
|
+
if (err) {
|
|
34
|
+
console.error('set rid for session service failed! error is : %j', err.stack);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
session.on('closed', this.onUserLeave.bind(this));
|
|
38
|
+
// put user into channel
|
|
39
|
+
let users = await self.app.rpc.chat.chatRemote.add.route(session)(uid, self.app.get('serverId'), rid, true);
|
|
40
|
+
return {
|
|
41
|
+
users: users
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* User log out handler
|
|
46
|
+
*
|
|
47
|
+
* @param {Object} app current application
|
|
48
|
+
* @param {Object} session current session object
|
|
49
|
+
*
|
|
50
|
+
*/
|
|
51
|
+
onUserLeave(session) {
|
|
52
|
+
if (!session || !session.uid) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
this.app.rpc.chat.chatRemote.kick.route(session, true)(session.uid, this.app.get('serverId'), session.get('rid'));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.EntryHandler = EntryHandler;
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnlIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vYXBwL3NlcnZlcnMvY29ubmVjdG9yL2hhbmRsZXIvZW50cnlIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLG1CQUF5QixHQUFnQjtJQUNyQyxPQUFPLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFGRCw0QkFFQztBQUVELE1BQWEsWUFBWTtJQUNyQixZQUFvQixHQUFnQjtRQUFoQixRQUFHLEdBQUgsR0FBRyxDQUFhO0lBQ3BDLENBQUM7SUFHRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBc0MsRUFBRSxPQUF3QjtRQUN4RSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7UUFDaEIsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztRQUNsQixJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDbkMsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUVwRCxtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoQyxPQUFPO2dCQUNILElBQUksRUFBRSxHQUFHO2dCQUNULEtBQUssRUFBRSxJQUFJO2FBQ2QsQ0FBQztTQUNMO1FBRUQsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsR0FBRztZQUM3QixJQUFJLEdBQUcsRUFBRTtnQkFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLG1EQUFtRCxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNqRjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVsRCx3QkFBd0I7UUFDeEIsSUFBSSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU1RyxPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUs7U0FDZixDQUFDO0lBQ04sQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFdBQVcsQ0FBQyxPQUF3QjtRQUNoQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtZQUMxQixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RILENBQUM7Q0FDSjtBQXZERCxvQ0F1REMifQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
function default_1() {
|
|
4
|
+
return new Lifecycle();
|
|
5
|
+
}
|
|
6
|
+
exports.default = default_1;
|
|
7
|
+
class Lifecycle {
|
|
8
|
+
beforeStartup(app, cb) {
|
|
9
|
+
console.log(app.getServerId(), '!!!before startup');
|
|
10
|
+
cb();
|
|
11
|
+
}
|
|
12
|
+
afterStartup(app, cb) {
|
|
13
|
+
console.log(app.getServerId(), '!!afterStartup');
|
|
14
|
+
cb();
|
|
15
|
+
}
|
|
16
|
+
afterStartAll(app) {
|
|
17
|
+
console.log(app.getServerId(), '!!after start all');
|
|
18
|
+
}
|
|
19
|
+
beforeShutdown(app, shutDown, cancelShutDownTimer) {
|
|
20
|
+
console.log(app.getServerId(), '!!beforeShutdown');
|
|
21
|
+
shutDown();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZWN5Y2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL3NlcnZlcnMvY29ubmVjdG9yL2xpZmVjeWNsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBO0lBQ0ksT0FBTyxJQUFJLFNBQVMsRUFBRSxDQUFDO0FBQzNCLENBQUM7QUFGRCw0QkFFQztBQUdELE1BQU0sU0FBUztJQUNYLGFBQWEsQ0FBQyxHQUFnQixFQUFFLEVBQWM7UUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUNwRCxFQUFFLEVBQUUsQ0FBQztJQUNULENBQUM7SUFFRCxZQUFZLENBQUMsR0FBZ0IsRUFBRSxFQUFjO1FBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDakQsRUFBRSxFQUFFLENBQUM7SUFDVCxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQWdCO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELGNBQWMsQ0FBQyxHQUFnQixFQUFFLFFBQW9CLEVBQUUsbUJBQStCO1FBQ2xGLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDbkQsUUFBUSxFQUFFLENBQUM7SUFDZixDQUFDO0NBQ0oifQ==
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GateHandler = void 0;
|
|
4
|
+
const dispatcher_1 = require("../../../util/dispatcher");
|
|
5
|
+
function default_1(app) {
|
|
6
|
+
return new GateHandler(app);
|
|
7
|
+
}
|
|
8
|
+
exports.default = default_1;
|
|
9
|
+
class GateHandler {
|
|
10
|
+
constructor(app) {
|
|
11
|
+
this.app = app;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Gate handler that dispatch user to connectors.
|
|
15
|
+
*
|
|
16
|
+
* @param {Object} msg message from client
|
|
17
|
+
* @param {Object} session
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
async queryEntry(msg, session) {
|
|
21
|
+
let uid = msg.uid;
|
|
22
|
+
if (!uid) {
|
|
23
|
+
return {
|
|
24
|
+
code: 500
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
// get all connectors
|
|
28
|
+
let connectors = this.app.getServersByType('connector');
|
|
29
|
+
if (!connectors || connectors.length === 0) {
|
|
30
|
+
return {
|
|
31
|
+
code: 500
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
// select connector
|
|
35
|
+
let res = (0, dispatcher_1.dispatch)(uid, connectors);
|
|
36
|
+
return {
|
|
37
|
+
code: 200,
|
|
38
|
+
host: res.host,
|
|
39
|
+
port: res.clientPort
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.GateHandler = GateHandler;
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZUhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9hcHAvc2VydmVycy9nYXRlL2hhbmRsZXIvZ2F0ZUhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseURBQW9EO0FBR3BELG1CQUF5QixHQUFnQjtJQUNyQyxPQUFPLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFGRCw0QkFFQztBQUVELE1BQWEsV0FBVztJQUNwQixZQUFvQixHQUFnQjtRQUFoQixRQUFHLEdBQUgsR0FBRyxDQUFhO0lBQ3BDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQWtCLEVBQUUsT0FBdUI7UUFDeEQsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztRQUNsQixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ04sT0FBTztnQkFDSCxJQUFJLEVBQUUsR0FBRzthQUNaLENBQUM7U0FDTDtRQUNELHFCQUFxQjtRQUNyQixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDeEMsT0FBTztnQkFDSCxJQUFJLEVBQUUsR0FBRzthQUNaLENBQUM7U0FDTDtRQUNELG1CQUFtQjtRQUNuQixJQUFJLEdBQUcsR0FBRyxJQUFBLHFCQUFRLEVBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3BDLE9BQU87WUFDSCxJQUFJLEVBQUUsR0FBRztZQUNULElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtZQUNkLElBQUksRUFBRSxHQUFHLENBQUMsVUFBVTtTQUN2QixDQUFDO0lBQ04sQ0FBQztDQUNKO0FBakNELGtDQWlDQyJ9
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dispatch = void 0;
|
|
4
|
+
const crc = require("crc");
|
|
5
|
+
function dispatch(uid, connectors) {
|
|
6
|
+
let index = Math.abs(crc.crc32(uid)) % connectors.length;
|
|
7
|
+
return connectors[index];
|
|
8
|
+
}
|
|
9
|
+
exports.dispatch = dispatch;
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FwcC91dGlsL2Rpc3BhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkJBQTJCO0FBRzNCLFNBQWdCLFFBQVEsQ0FBQyxHQUFXLEVBQUcsVUFBd0I7SUFDM0QsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztJQUN6RCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBSEQsNEJBR0MifQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.chat = void 0;
|
|
4
|
+
const dispatcher_1 = require("./dispatcher");
|
|
5
|
+
function chat(session, msg, app, cb) {
|
|
6
|
+
let chatServers = app.getServersByType('chat');
|
|
7
|
+
if (!chatServers || chatServers.length === 0) {
|
|
8
|
+
cb(new Error('can not find chat servers.'));
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
let res = (0, dispatcher_1.dispatch)(session.get('rid'), chatServers);
|
|
12
|
+
cb(null, res.id);
|
|
13
|
+
}
|
|
14
|
+
exports.chat = chat;
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVVdGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXBwL3V0aWwvcm91dGVVdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZDQUF1QztBQUd2QyxTQUFnQixJQUFJLENBQUMsT0FBZ0IsRUFBRSxHQUFRLEVBQUUsR0FBZ0IsRUFBRSxFQUE2QztJQUM1RyxJQUFJLFdBQVcsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFL0MsSUFBRyxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUN6QyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDO1FBQzVDLE9BQU87S0FDVjtJQUVELElBQUksR0FBRyxHQUFHLElBQUEscUJBQVEsRUFBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBRXBELEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JCLENBQUM7QUFYRCxvQkFXQyJ9
|
package/dist/app.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const melo_1 = require("@bigtyphoon/melo");
|
|
4
|
+
const routeUtil = require("./app/util/routeUtil");
|
|
5
|
+
const preload_1 = require("./preload");
|
|
6
|
+
const melo_robot_plugin_1 = require("@bigtyphoon/melo-robot-plugin");
|
|
7
|
+
/**
|
|
8
|
+
* 替换全局Promise
|
|
9
|
+
* 自动解析sourcemap
|
|
10
|
+
* 捕获全局错误
|
|
11
|
+
*/
|
|
12
|
+
(0, preload_1.preload)();
|
|
13
|
+
/**
|
|
14
|
+
* Init app for client.
|
|
15
|
+
*/
|
|
16
|
+
let app = melo_1.melo.createApp();
|
|
17
|
+
app.set('name', 'chatofpomelo-websocket');
|
|
18
|
+
// app configuration
|
|
19
|
+
app.configure('production|development', 'connector', function () {
|
|
20
|
+
app.set('connectorConfig', {
|
|
21
|
+
connector: melo_1.melo.connectors.hybridconnector,
|
|
22
|
+
heartbeat: 3,
|
|
23
|
+
useDict: true,
|
|
24
|
+
useProtobuf: true
|
|
25
|
+
});
|
|
26
|
+
app.set('serverConfig', {
|
|
27
|
+
reloadHandlers: true,
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
app.configure('production|development', 'gate', function () {
|
|
31
|
+
app.set('connectorConfig', {
|
|
32
|
+
connector: melo_1.melo.connectors.hybridconnector,
|
|
33
|
+
useProtobuf: true
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
// app configure
|
|
37
|
+
app.configure('production|development', function () {
|
|
38
|
+
// route configures
|
|
39
|
+
app.route('chat', routeUtil.chat);
|
|
40
|
+
// filter configures
|
|
41
|
+
app.filter(new melo_1.melo.filters.timeout());
|
|
42
|
+
// 热更新 handler配置
|
|
43
|
+
// app.set('serverConfig',{
|
|
44
|
+
// reloadHandlers:true,
|
|
45
|
+
// });
|
|
46
|
+
// 热更新 remote 配置
|
|
47
|
+
// app.set('remoteConfig', {
|
|
48
|
+
// reloadRemotes: true
|
|
49
|
+
// });
|
|
50
|
+
});
|
|
51
|
+
app.configure('development', function () {
|
|
52
|
+
// enable the system monitor modules
|
|
53
|
+
app.enable('systemMonitor');
|
|
54
|
+
});
|
|
55
|
+
if (app.isMaster()) {
|
|
56
|
+
app.use((0, melo_robot_plugin_1.createRobotPlugin)({ scriptFile: __dirname + '/robot/robot.js' }));
|
|
57
|
+
}
|
|
58
|
+
// start app
|
|
59
|
+
app.start();
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMkNBQXdDO0FBQ3hDLGtEQUFtRDtBQUNuRCx1Q0FBb0M7QUFDcEMscUVBQWtFO0FBRWxFOzs7O0dBSUc7QUFDSCxJQUFBLGlCQUFPLEdBQUUsQ0FBQztBQUVWOztHQUVHO0FBQ0gsSUFBSSxHQUFHLEdBQUcsV0FBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQzNCLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLHdCQUF3QixDQUFDLENBQUM7QUFFMUMsb0JBQW9CO0FBQ3BCLEdBQUcsQ0FBQyxTQUFTLENBQUMsd0JBQXdCLEVBQUUsV0FBVyxFQUFFO0lBQ2pELEdBQUcsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQ3JCO1FBQ0ksU0FBUyxFQUFFLFdBQUksQ0FBQyxVQUFVLENBQUMsZUFBZTtRQUMxQyxTQUFTLEVBQUUsQ0FBQztRQUNaLE9BQU8sRUFBRSxJQUFJO1FBQ2IsV0FBVyxFQUFFLElBQUk7S0FDcEIsQ0FBQyxDQUFDO0lBRVAsR0FBRyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUU7UUFDcEIsY0FBYyxFQUFFLElBQUk7S0FDdkIsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFDLENBQUM7QUFFSCxHQUFHLENBQUMsU0FBUyxDQUFDLHdCQUF3QixFQUFFLE1BQU0sRUFBRTtJQUM1QyxHQUFHLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUNyQjtRQUNJLFNBQVMsRUFBRSxXQUFJLENBQUMsVUFBVSxDQUFDLGVBQWU7UUFDMUMsV0FBVyxFQUFFLElBQUk7S0FDcEIsQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDLENBQUM7QUFFSCxnQkFBZ0I7QUFDaEIsR0FBRyxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsRUFBRTtJQUNwQyxtQkFBbUI7SUFDbkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWxDLG9CQUFvQjtJQUNwQixHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksV0FBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBRXZDLGdCQUFnQjtJQUNoQiwyQkFBMkI7SUFDM0IsMkJBQTJCO0lBQzNCLE1BQU07SUFDTixnQkFBZ0I7SUFDaEIsNEJBQTRCO0lBQzVCLDBCQUEwQjtJQUMxQixNQUFNO0FBQ1YsQ0FBQyxDQUFDLENBQUM7QUFFSCxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRTtJQUN6QixvQ0FBb0M7SUFDcEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUNoQyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFO0lBQ2hCLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBQSxxQ0FBaUIsRUFBQyxFQUFFLFVBQVUsRUFBRSxTQUFTLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDN0U7QUFFRCxZQUFZO0FBQ1osR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDIn0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
[{
|
|
2
|
+
"type": "connector",
|
|
3
|
+
"token": "agarxhqb98rpajloaxn34ga8xrunpagkjwlaw3ruxnpaagl29w4rxn"
|
|
4
|
+
}, {
|
|
5
|
+
"type": "chat",
|
|
6
|
+
"token": "agarxhqb98rpajloaxn34ga8xrunpagkjwlaw3ruxnpaagl29w4rxn"
|
|
7
|
+
},{
|
|
8
|
+
"type": "gate",
|
|
9
|
+
"token": "agarxhqb98rpajloaxn34ga8xrunpagkjwlaw3ruxnpaagl29w4rxn"
|
|
10
|
+
}
|
|
11
|
+
]
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
[{
|
|
2
|
+
"id": "user-1",
|
|
3
|
+
"username": "admin",
|
|
4
|
+
"password": "admin",
|
|
5
|
+
"level": 1
|
|
6
|
+
}, {
|
|
7
|
+
"id": "user-2",
|
|
8
|
+
"username": "monitor",
|
|
9
|
+
"password": "monitor",
|
|
10
|
+
"level": 2
|
|
11
|
+
},{
|
|
12
|
+
"id": "user-3",
|
|
13
|
+
"username": "test",
|
|
14
|
+
"password": "test",
|
|
15
|
+
"level": 2
|
|
16
|
+
}
|
|
17
|
+
]
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
{
|
|
2
|
+
"appenders": {
|
|
3
|
+
"console": {
|
|
4
|
+
"type": "console"
|
|
5
|
+
},
|
|
6
|
+
"con-log": {
|
|
7
|
+
"type": "file",
|
|
8
|
+
"filename": "${opts:base}/logs/con-log-${opts:serverId}.log",
|
|
9
|
+
"pattern": "connector",
|
|
10
|
+
"maxLogSize": 1048576,
|
|
11
|
+
"layout": {
|
|
12
|
+
"type": "basic"
|
|
13
|
+
},
|
|
14
|
+
"backups": 5
|
|
15
|
+
},
|
|
16
|
+
"rpc-log": {
|
|
17
|
+
"type": "file",
|
|
18
|
+
"filename": "${opts:base}/logs/rpc-log-${opts:serverId}.log",
|
|
19
|
+
"maxLogSize": 1048576,
|
|
20
|
+
"layout": {
|
|
21
|
+
"type": "basic"
|
|
22
|
+
},
|
|
23
|
+
"backups": 5
|
|
24
|
+
},
|
|
25
|
+
"forward-log": {
|
|
26
|
+
"type": "file",
|
|
27
|
+
"filename": "${opts:base}/logs/forward-log-${opts:serverId}.log",
|
|
28
|
+
"maxLogSize": 1048576,
|
|
29
|
+
"layout": {
|
|
30
|
+
"type": "basic"
|
|
31
|
+
},
|
|
32
|
+
"backups": 5
|
|
33
|
+
},
|
|
34
|
+
"rpc-debug": {
|
|
35
|
+
"type": "file",
|
|
36
|
+
"filename": "${opts:base}/logs/rpc-debug-${opts:serverId}.log",
|
|
37
|
+
"maxLogSize": 1048576,
|
|
38
|
+
"layout": {
|
|
39
|
+
"type": "basic"
|
|
40
|
+
},
|
|
41
|
+
"backups": 5
|
|
42
|
+
},
|
|
43
|
+
"crash-log": {
|
|
44
|
+
"type": "file",
|
|
45
|
+
"filename": "${opts:base}/logs/crash.log",
|
|
46
|
+
"maxLogSize": 1048576,
|
|
47
|
+
"layout": {
|
|
48
|
+
"type": "basic"
|
|
49
|
+
},
|
|
50
|
+
"backups": 5
|
|
51
|
+
},
|
|
52
|
+
"admin-log": {
|
|
53
|
+
"type": "file",
|
|
54
|
+
"filename": "${opts:base}/logs/admin.log",
|
|
55
|
+
"maxLogSize": 1048576,
|
|
56
|
+
"layout": {
|
|
57
|
+
"type": "basic"
|
|
58
|
+
},
|
|
59
|
+
"backups": 5
|
|
60
|
+
},
|
|
61
|
+
"pinus": {
|
|
62
|
+
"type": "file",
|
|
63
|
+
"filename": "${opts:base}/logs/pinus-${opts:serverId}.log",
|
|
64
|
+
"maxLogSize": 1048576,
|
|
65
|
+
"layout": {
|
|
66
|
+
"type": "basic"
|
|
67
|
+
},
|
|
68
|
+
"backups": 5
|
|
69
|
+
},
|
|
70
|
+
"pinus-admin": {
|
|
71
|
+
"type": "file",
|
|
72
|
+
"filename": "${opts:base}/logs/pinus-admin.log",
|
|
73
|
+
"maxLogSize": 1048576,
|
|
74
|
+
"layout": {
|
|
75
|
+
"type": "basic"
|
|
76
|
+
},
|
|
77
|
+
"backups": 5
|
|
78
|
+
},
|
|
79
|
+
"pinus-rpc": {
|
|
80
|
+
"type": "file",
|
|
81
|
+
"filename": "${opts:base}/logs/pinus-rpc-${opts:serverId}.log",
|
|
82
|
+
"maxLogSize": 1048576,
|
|
83
|
+
"layout": {
|
|
84
|
+
"type": "basic"
|
|
85
|
+
},
|
|
86
|
+
"backups": 5
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"categories": {
|
|
90
|
+
"default": {
|
|
91
|
+
"appenders": [
|
|
92
|
+
"console",
|
|
93
|
+
"pinus"
|
|
94
|
+
],
|
|
95
|
+
"level": "debug"
|
|
96
|
+
},
|
|
97
|
+
"con-log": {
|
|
98
|
+
"appenders": [
|
|
99
|
+
"con-log"
|
|
100
|
+
],
|
|
101
|
+
"level": "debug"
|
|
102
|
+
},
|
|
103
|
+
"rpc-log": {
|
|
104
|
+
"appenders": [
|
|
105
|
+
"rpc-log"
|
|
106
|
+
],
|
|
107
|
+
"level": "debug"
|
|
108
|
+
},
|
|
109
|
+
"forward-log": {
|
|
110
|
+
"appenders": [
|
|
111
|
+
"forward-log"
|
|
112
|
+
],
|
|
113
|
+
"level": "debug"
|
|
114
|
+
},
|
|
115
|
+
"rpc-debug": {
|
|
116
|
+
"appenders": [
|
|
117
|
+
"rpc-debug"
|
|
118
|
+
],
|
|
119
|
+
"level": "debug"
|
|
120
|
+
},
|
|
121
|
+
"crash-log": {
|
|
122
|
+
"appenders": [
|
|
123
|
+
"crash-log"
|
|
124
|
+
],
|
|
125
|
+
"level": "debug"
|
|
126
|
+
},
|
|
127
|
+
"admin-log": {
|
|
128
|
+
"appenders": [
|
|
129
|
+
"admin-log"
|
|
130
|
+
],
|
|
131
|
+
"level": "debug"
|
|
132
|
+
},
|
|
133
|
+
"pinus-admin": {
|
|
134
|
+
"appenders": [
|
|
135
|
+
"pinus-admin"
|
|
136
|
+
],
|
|
137
|
+
"level": "debug"
|
|
138
|
+
},
|
|
139
|
+
"pinus-rpc": {
|
|
140
|
+
"appenders": [
|
|
141
|
+
"pinus-rpc"
|
|
142
|
+
],
|
|
143
|
+
"level": "debug"
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
"prefix": "${opts:serverId} ",
|
|
147
|
+
"replaceConsole": true,
|
|
148
|
+
"lineDebug": false,
|
|
149
|
+
"errorStack": true
|
|
150
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"development":{
|
|
3
|
+
"connector":[
|
|
4
|
+
{"id":"connector-server-1", "host":"127.0.0.1", "port":4050, "clientPort": 3050, "frontend": true, "args": "--inspect=10001"}
|
|
5
|
+
],
|
|
6
|
+
"chat":[
|
|
7
|
+
{"id":"chat-server-1", "host":"127.0.0.1", "port":6050, "args": "--inspect=10002"}
|
|
8
|
+
],
|
|
9
|
+
"gate":[
|
|
10
|
+
{"id": "gate-server-1", "host": "127.0.0.1", "clientPort": 3014, "frontend": true, "args": "--inspect=10003"}
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
"production":{
|
|
14
|
+
"connector":[
|
|
15
|
+
{"id":"connector-server-1", "host":"127.0.0.1", "port":4050, "clientPort": 3050, "frontend": true},
|
|
16
|
+
{"id":"connector-server-2", "host":"127.0.0.1", "port":4051, "clientPort": 3051, "frontend": true},
|
|
17
|
+
{"id":"connector-server-3", "host":"127.0.0.1", "port":4052, "clientPort": 3052, "frontend": true}
|
|
18
|
+
],
|
|
19
|
+
"chat":[
|
|
20
|
+
{"id":"chat-server-1", "host":"127.0.0.1", "port":6050},
|
|
21
|
+
{"id":"chat-server-2", "host":"127.0.0.1", "port":6051},
|
|
22
|
+
{"id":"chat-server-3", "host":"127.0.0.1", "port":6052}
|
|
23
|
+
],
|
|
24
|
+
"gate":[
|
|
25
|
+
{"id": "gate-server-1", "host": "127.0.0.1", "clientPort": 3014, "frontend": true}
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
}
|
package/dist/preload.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.preload = void 0;
|
|
4
|
+
const bluebird_1 = require("bluebird");
|
|
5
|
+
// 支持注解
|
|
6
|
+
require("reflect-metadata");
|
|
7
|
+
const melo_1 = require("@bigtyphoon/melo");
|
|
8
|
+
/**
|
|
9
|
+
* 替换全局Promise
|
|
10
|
+
* 自动解析sourcemap
|
|
11
|
+
* 捕获全局错误
|
|
12
|
+
*/
|
|
13
|
+
function preload() {
|
|
14
|
+
// 使用bluebird输出完整的promise调用链
|
|
15
|
+
global.Promise = bluebird_1.Promise;
|
|
16
|
+
// 开启长堆栈
|
|
17
|
+
bluebird_1.Promise.config({
|
|
18
|
+
// Enable warnings
|
|
19
|
+
warnings: true,
|
|
20
|
+
// Enable long stack traces
|
|
21
|
+
longStackTraces: true,
|
|
22
|
+
// Enable cancellation
|
|
23
|
+
cancellation: true,
|
|
24
|
+
// Enable monitoring
|
|
25
|
+
monitoring: true
|
|
26
|
+
});
|
|
27
|
+
// 自动解析ts的sourcemap
|
|
28
|
+
require('source-map-support').install({
|
|
29
|
+
handleUncaughtExceptions: false
|
|
30
|
+
});
|
|
31
|
+
// 捕获普通异常
|
|
32
|
+
process.on('uncaughtException', function (err) {
|
|
33
|
+
console.error(melo_1.melo.app ? melo_1.melo.app.getServerId() : "unknownServerId", 'uncaughtException Caught exception: ', err);
|
|
34
|
+
});
|
|
35
|
+
// 捕获async异常
|
|
36
|
+
process.on('unhandledRejection', (reason, p) => {
|
|
37
|
+
console.error(melo_1.melo.app ? melo_1.melo.app.getServerId() : "unknownServerId", 'Caught Unhandled Rejection at:', p, 'reason:', reason);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
exports.preload = preload;
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlbG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3ByZWxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdUNBQWlDO0FBQ2pDLE9BQU87QUFDUCw0QkFBMEI7QUFDMUIsMkNBQXdDO0FBRXhDOzs7O0dBSUc7QUFDSCxTQUFnQixPQUFPO0lBQ25CLDRCQUE0QjtJQUMxQixNQUFjLENBQUMsT0FBZSxHQUFJLGtCQUFlLENBQUM7SUFDcEQsUUFBUTtJQUNSLGtCQUFPLENBQUMsTUFBTSxDQUFDO1FBQ1gsa0JBQWtCO1FBQ2xCLFFBQVEsRUFBRSxJQUFJO1FBQ2QsMkJBQTJCO1FBQzNCLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLHNCQUFzQjtRQUN0QixZQUFZLEVBQUUsSUFBSTtRQUNsQixvQkFBb0I7UUFDcEIsVUFBVSxFQUFFLElBQUk7S0FDbkIsQ0FBQyxDQUFDO0lBRUgsbUJBQW1CO0lBQ25CLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNsQyx3QkFBd0IsRUFBRSxLQUFLO0tBQ2xDLENBQUMsQ0FBQztJQUVILFNBQVM7SUFDVCxPQUFPLENBQUMsRUFBRSxDQUFDLG1CQUFtQixFQUFFLFVBQVUsR0FBRztRQUN6QyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLHNDQUFzQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3RILENBQUMsQ0FBQyxDQUFDO0lBRUgsWUFBWTtJQUNaLE9BQU8sQ0FBQyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxNQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDaEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxnQ0FBZ0MsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2pJLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQTdCRCwwQkE2QkMifQ==
|