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,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Robot = void 0;
|
|
4
|
+
const melo_robot_plugin_1 = require("@bigtyphoon/melo-robot-plugin");
|
|
5
|
+
class Robot {
|
|
6
|
+
constructor(actor) {
|
|
7
|
+
this.actor = actor;
|
|
8
|
+
this.openid = String(Math.round(Math.random() * 1000));
|
|
9
|
+
this.meloClient = new melo_robot_plugin_1.MeloWSClient();
|
|
10
|
+
}
|
|
11
|
+
connectGate() {
|
|
12
|
+
let host = '127.0.0.1';
|
|
13
|
+
let port = '3014';
|
|
14
|
+
this.meloClient.on(melo_robot_plugin_1.MeloWSClientEvent.EVENT_IO_ERROR, (event) => {
|
|
15
|
+
// 错误处理
|
|
16
|
+
console.error('error', event);
|
|
17
|
+
});
|
|
18
|
+
this.meloClient.on(melo_robot_plugin_1.MeloWSClientEvent.EVENT_CLOSE, function (event) {
|
|
19
|
+
// 关闭处理
|
|
20
|
+
console.error('close', event);
|
|
21
|
+
});
|
|
22
|
+
this.meloClient.on(melo_robot_plugin_1.MeloWSClientEvent.EVENT_HEART_BEAT_TIMEOUT, function (event) {
|
|
23
|
+
// 心跳timeout
|
|
24
|
+
console.error('heart beat timeout', event);
|
|
25
|
+
});
|
|
26
|
+
this.meloClient.on(melo_robot_plugin_1.MeloWSClientEvent.EVENT_KICK, function (event) {
|
|
27
|
+
// 踢出
|
|
28
|
+
console.error('kick', event);
|
|
29
|
+
});
|
|
30
|
+
// this.actor.emit("incr" , "gateConnReq");
|
|
31
|
+
this.actor.emit('start', 'gateConn', this.actor.id);
|
|
32
|
+
this.meloClient.init({
|
|
33
|
+
host: host,
|
|
34
|
+
port: port
|
|
35
|
+
}, () => {
|
|
36
|
+
this.actor.emit('end', 'gateConn', this.actor.id);
|
|
37
|
+
// 连接成功执行函数
|
|
38
|
+
console.log('gate连接成功');
|
|
39
|
+
this.gateQuery();
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
gateQuery() {
|
|
43
|
+
// this.actor.emit("incr" , "gateQueryReq");
|
|
44
|
+
this.actor.emit('start', 'gateQuery', this.actor.id);
|
|
45
|
+
this.meloClient.request('gate.gateHandler.queryEntry', { uid: this.openid }, (result) => {
|
|
46
|
+
// 消息回调
|
|
47
|
+
// console.log("gate返回",JSON.stringify(result));
|
|
48
|
+
this.actor.emit('end', 'gateQuery', this.actor.id);
|
|
49
|
+
this.meloClient.disconnect();
|
|
50
|
+
this.connectToConnector(result);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
connectToConnector(result) {
|
|
54
|
+
// this.actor.emit("incr" , "loginConnReq");
|
|
55
|
+
this.actor.emit('start', 'loginConn', this.actor.id);
|
|
56
|
+
this.meloClient.init({
|
|
57
|
+
host: result.host,
|
|
58
|
+
port: result.port
|
|
59
|
+
}, () => {
|
|
60
|
+
this.actor.emit('end', 'loginConn', this.actor.id);
|
|
61
|
+
// 连接成功执行函数
|
|
62
|
+
console.log('connector连接成功');
|
|
63
|
+
this.loginQuery({ rid: this.actor.id.toString(), username: this.actor.id.toString() });
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
loginQuery(result) {
|
|
67
|
+
// this.actor.emit("incr" , "loginQueryReq");
|
|
68
|
+
this.actor.emit('start', 'loginQuery', this.actor.id);
|
|
69
|
+
this.meloClient.request('connector.entryHandler.enter', result, (ret) => {
|
|
70
|
+
// 消息回调
|
|
71
|
+
this.actor.emit('end', 'loginQuery', this.actor.id);
|
|
72
|
+
console.log('connector返回', JSON.stringify(result));
|
|
73
|
+
setTimeout(() => this.loginQuery(result), Math.random() * 5000 + 1000);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.Robot = Robot;
|
|
78
|
+
function default_1(actor) {
|
|
79
|
+
let client = new Robot(actor);
|
|
80
|
+
client.connectGate();
|
|
81
|
+
return client;
|
|
82
|
+
}
|
|
83
|
+
exports.default = default_1;
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9ib3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9yb2JvdC9yb2JvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxxRUFBK0U7QUFHL0UsTUFBYSxLQUFLO0lBQ2QsWUFBb0IsS0FBWTtRQUFaLFVBQUssR0FBTCxLQUFLLENBQU87UUFJaEMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRWxELGVBQVUsR0FBRyxJQUFJLGdDQUFZLEVBQUUsQ0FBQztJQUpoQyxDQUFDO0lBTU0sV0FBVztRQUVkLElBQUksSUFBSSxHQUFHLFdBQVcsQ0FBQztRQUN2QixJQUFJLElBQUksR0FBRyxNQUFNLENBQUM7UUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMscUNBQWlCLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDM0QsT0FBTztZQUNQLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMscUNBQWlCLENBQUMsV0FBVyxFQUFFLFVBQVMsS0FBSztZQUM1RCxPQUFPO1lBQ1AsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxxQ0FBaUIsQ0FBQyx3QkFBd0IsRUFBRSxVQUFTLEtBQUs7WUFDekUsWUFBWTtZQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxxQ0FBaUIsQ0FBQyxVQUFV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
|
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "melo-sample-websocket-chat-game-server",
|
|
3
|
+
"version": "1.7.6",
|
|
4
|
+
"private": false,
|
|
5
|
+
"main": "./dist/app",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"build": "node_modules/.bin/tsc",
|
|
8
|
+
"start": "yarn run build && cd dist && node app",
|
|
9
|
+
"test": "yarn run build",
|
|
10
|
+
"cov": "nyc mocha",
|
|
11
|
+
"ci": "yarn run test",
|
|
12
|
+
"gen-api-ref": "node ../../../node_modules/typedoc/bin/typedoc --mode file --hideGenerator --excludeExternals --ignoreCompilerErrors --out ../../../run/site/public/api-reference/melo-loader lib/"
|
|
13
|
+
},
|
|
14
|
+
"engines": {
|
|
15
|
+
"node": ">=12.9.0"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@bigtyphoon/melo": "^1.7.6",
|
|
19
|
+
"@bigtyphoon/melo-robot": "^1.7.6",
|
|
20
|
+
"@bigtyphoon/melo-robot-plugin": "^1.7.6",
|
|
21
|
+
"@types/bluebird": "^3.5.19",
|
|
22
|
+
"@types/crc": "^3.4.0",
|
|
23
|
+
"@types/node": "^16.3.3",
|
|
24
|
+
"bluebird": "^3.5.1",
|
|
25
|
+
"crc": "^4.3.2",
|
|
26
|
+
"reflect-metadata": "^0.2.2",
|
|
27
|
+
"source-map-support": "^0.5.0"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"tslint": "^6.1.3",
|
|
31
|
+
"typescript": "^4.3.5"
|
|
32
|
+
},
|
|
33
|
+
"gitHead": "7dfd3ca78ed6b051e34da595269efb623cd58d1b"
|
|
34
|
+
}
|
package/preload.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import {Promise} from 'bluebird';
|
|
2
|
+
// 支持注解
|
|
3
|
+
import 'reflect-metadata';
|
|
4
|
+
import { melo } from '@bigtyphoon/melo';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* 替换全局Promise
|
|
8
|
+
* 自动解析sourcemap
|
|
9
|
+
* 捕获全局错误
|
|
10
|
+
*/
|
|
11
|
+
export function preload() {
|
|
12
|
+
// 使用bluebird输出完整的promise调用链
|
|
13
|
+
((global as any).Promise as any) = (Promise as any);
|
|
14
|
+
// 开启长堆栈
|
|
15
|
+
Promise.config({
|
|
16
|
+
// Enable warnings
|
|
17
|
+
warnings: true,
|
|
18
|
+
// Enable long stack traces
|
|
19
|
+
longStackTraces: true,
|
|
20
|
+
// Enable cancellation
|
|
21
|
+
cancellation: true,
|
|
22
|
+
// Enable monitoring
|
|
23
|
+
monitoring: true
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
// 自动解析ts的sourcemap
|
|
27
|
+
require('source-map-support').install({
|
|
28
|
+
handleUncaughtExceptions: false
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// 捕获普通异常
|
|
32
|
+
process.on('uncaughtException', function (err) {
|
|
33
|
+
console.error(melo.app ? melo.app.getServerId() : "unknownServerId", 'uncaughtException Caught exception: ', err);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// 捕获async异常
|
|
37
|
+
process.on('unhandledRejection', (reason: any, p) => {
|
|
38
|
+
console.error(melo.app ? melo.app.getServerId() : "unknownServerId", 'Caught Unhandled Rejection at:', p, 'reason:', reason);
|
|
39
|
+
});
|
|
40
|
+
}
|
package/robot/robot.ts
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
|
|
2
|
+
import { Actor } from '@bigtyphoon/melo-robot';
|
|
3
|
+
import { MeloWSClient, MeloWSClientEvent} from '@bigtyphoon/melo-robot-plugin';
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
export class Robot {
|
|
7
|
+
constructor(private actor: Actor) {
|
|
8
|
+
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
openid = String(Math.round(Math.random() * 1000));
|
|
12
|
+
|
|
13
|
+
meloClient = new MeloWSClient();
|
|
14
|
+
|
|
15
|
+
public connectGate(): void {
|
|
16
|
+
|
|
17
|
+
let host = '127.0.0.1';
|
|
18
|
+
let port = '3014';
|
|
19
|
+
this.meloClient.on(MeloWSClientEvent.EVENT_IO_ERROR, (event) => {
|
|
20
|
+
// 错误处理
|
|
21
|
+
console.error('error', event);
|
|
22
|
+
});
|
|
23
|
+
this.meloClient.on(MeloWSClientEvent.EVENT_CLOSE, function(event) {
|
|
24
|
+
// 关闭处理
|
|
25
|
+
console.error('close', event);
|
|
26
|
+
});
|
|
27
|
+
this.meloClient.on(MeloWSClientEvent.EVENT_HEART_BEAT_TIMEOUT, function(event) {
|
|
28
|
+
// 心跳timeout
|
|
29
|
+
console.error('heart beat timeout', event);
|
|
30
|
+
});
|
|
31
|
+
this.meloClient.on(MeloWSClientEvent.EVENT_KICK, function(event) {
|
|
32
|
+
// 踢出
|
|
33
|
+
console.error('kick', event);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// this.actor.emit("incr" , "gateConnReq");
|
|
37
|
+
this.actor.emit('start' , 'gateConn' , this.actor.id);
|
|
38
|
+
this.meloClient.init({
|
|
39
|
+
host: host,
|
|
40
|
+
port: port
|
|
41
|
+
}, () => {
|
|
42
|
+
this.actor.emit('end' , 'gateConn' , this.actor.id);
|
|
43
|
+
// 连接成功执行函数
|
|
44
|
+
console.log('gate连接成功');
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
this.gateQuery();
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
gateQuery() {
|
|
51
|
+
// this.actor.emit("incr" , "gateQueryReq");
|
|
52
|
+
this.actor.emit('start' , 'gateQuery' , this.actor.id);
|
|
53
|
+
this.meloClient.request('gate.gateHandler.queryEntry', {uid: this.openid} , (result: {code: number , host: string , port: number}) => {
|
|
54
|
+
// 消息回调
|
|
55
|
+
// console.log("gate返回",JSON.stringify(result));
|
|
56
|
+
this.actor.emit('end' , 'gateQuery' , this.actor.id);
|
|
57
|
+
this.meloClient.disconnect();
|
|
58
|
+
this.connectToConnector(result);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
connectToConnector(result: {host: string , port: number}) {
|
|
63
|
+
// this.actor.emit("incr" , "loginConnReq");
|
|
64
|
+
this.actor.emit('start' , 'loginConn' , this.actor.id);
|
|
65
|
+
this.meloClient.init({
|
|
66
|
+
host: result.host,
|
|
67
|
+
port: result.port
|
|
68
|
+
}, () => {
|
|
69
|
+
this.actor.emit('end' , 'loginConn' , this.actor.id);
|
|
70
|
+
// 连接成功执行函数
|
|
71
|
+
console.log('connector连接成功');
|
|
72
|
+
|
|
73
|
+
this.loginQuery({rid: this.actor.id.toString() , username : this.actor.id.toString()});
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
loginQuery(result: {rid: string, username: string}) {
|
|
78
|
+
|
|
79
|
+
// this.actor.emit("incr" , "loginQueryReq");
|
|
80
|
+
this.actor.emit('start' , 'loginQuery' , this.actor.id);
|
|
81
|
+
this.meloClient.request('connector.entryHandler.enter', result , (ret: any) => {
|
|
82
|
+
// 消息回调
|
|
83
|
+
this.actor.emit('end' , 'loginQuery' , this.actor.id);
|
|
84
|
+
console.log('connector返回', JSON.stringify(result));
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
setTimeout(() =>
|
|
88
|
+
this.loginQuery(result) , Math.random() * 5000 + 1000);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export default function(actor: Actor) {
|
|
94
|
+
let client = new Robot(actor);
|
|
95
|
+
client.connectGate();
|
|
96
|
+
return client;
|
|
97
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"skipLibCheck": true,
|
|
4
|
+
// types option has been previously configured
|
|
5
|
+
"types": [
|
|
6
|
+
// add node as an option
|
|
7
|
+
"node"
|
|
8
|
+
],
|
|
9
|
+
"module": "commonjs", //指定生成哪个模块系统代码
|
|
10
|
+
"target": "es2017",
|
|
11
|
+
"lib": [
|
|
12
|
+
"es2015",
|
|
13
|
+
"es2016",
|
|
14
|
+
"esnext.asynciterable",
|
|
15
|
+
"DOM"
|
|
16
|
+
],
|
|
17
|
+
"noImplicitAny": true, //在表达式和声明上有隐含的'any'类型时报错。
|
|
18
|
+
"noImplicitThis": true,
|
|
19
|
+
"inlineSourceMap": true, //用于debug
|
|
20
|
+
"newLine": "lf", // 统一跨平台下编译文件的换行符
|
|
21
|
+
|
|
22
|
+
"rootDirs": ["."], //仅用来控制输出的目录结构--outDir。
|
|
23
|
+
"outDir": "./dist", //重定向输出目录。
|
|
24
|
+
"experimentalDecorators": true,
|
|
25
|
+
"emitDecoratorMetadata": true,
|
|
26
|
+
"moduleResolution": "node"
|
|
27
|
+
},
|
|
28
|
+
"include": [
|
|
29
|
+
"./**/*.ts"
|
|
30
|
+
],
|
|
31
|
+
"exclude": [
|
|
32
|
+
"./dist/**/*.*"
|
|
33
|
+
]
|
|
34
|
+
}
|