melo-simple-example-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 +27 -0
- package/LICENSE +21 -0
- package/app/servers/connector/handler/entryHandler.ts +53 -0
- package/app/servers/connector/remote/authRemoter.ts +35 -0
- package/app.ts +34 -0
- package/dist/app/servers/connector/handler/entryHandler.js +52 -0
- package/dist/app/servers/connector/remote/authRemoter.js +25 -0
- package/dist/app.js +30 -0
- package/dist/config/adminServer.json +5 -0
- package/dist/config/adminUser.json +22 -0
- package/dist/config/clientProtos.json +1 -0
- package/dist/config/dictionary.json +1 -0
- package/dist/config/log4js.json +150 -0
- package/dist/config/master.json +8 -0
- package/dist/config/serverProtos.json +1 -0
- package/dist/config/servers.json +12 -0
- package/dist/preload.js +41 -0
- package/package.json +31 -0
- package/preload.ts +40 -0
- package/tsconfig.json +34 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
// 使用 IntelliSense 了解相关属性。
|
|
3
|
+
// 悬停以查看现有属性的描述。
|
|
4
|
+
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
|
|
5
|
+
"version": "0.2.0",
|
|
6
|
+
"configurations": [
|
|
7
|
+
{
|
|
8
|
+
"type": "node",
|
|
9
|
+
"request": "launch",
|
|
10
|
+
"name": "LaunchMaster",
|
|
11
|
+
"program": "${workspaceFolder}\\dist\\app.js",
|
|
12
|
+
"outFiles": [
|
|
13
|
+
"${workspaceFolder}/**/*.js"
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"type": "node",
|
|
18
|
+
"request": "attach",
|
|
19
|
+
"name": "Attach to Connector",
|
|
20
|
+
"address": "127.0.0.1",
|
|
21
|
+
"port": 10001,
|
|
22
|
+
"localRoot": "${workspaceFolder}",
|
|
23
|
+
"remoteRoot": "${workspaceFolder}"
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
]
|
|
27
|
+
}
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2017 node-melo
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Application, FrontendSession } from '@bigtyphoon/melo';
|
|
2
|
+
|
|
3
|
+
export default function (app: Application) {
|
|
4
|
+
return new Handler(app);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export class Handler {
|
|
8
|
+
constructor(private app: Application) {
|
|
9
|
+
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* New client entry.
|
|
14
|
+
*
|
|
15
|
+
* @param {Object} msg request message
|
|
16
|
+
* @param {Object} session current session object
|
|
17
|
+
* @return {Void}
|
|
18
|
+
*/
|
|
19
|
+
async entry(msg: any, session: FrontendSession) {
|
|
20
|
+
return { code: 200, msg: 'game server is ok.' };
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Publish route for mqtt connector.
|
|
25
|
+
*
|
|
26
|
+
* @param {Object} msg request message
|
|
27
|
+
* @param {Object} session current session object
|
|
28
|
+
* @return {Void}
|
|
29
|
+
*/
|
|
30
|
+
async publish(msg: any, session: FrontendSession) {
|
|
31
|
+
let result = {
|
|
32
|
+
topic: 'publish',
|
|
33
|
+
payload: JSON.stringify({ code: 200, msg: 'publish message is ok.' })
|
|
34
|
+
};
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Subscribe route for mqtt connector.
|
|
40
|
+
*
|
|
41
|
+
* @param {Object} msg request message
|
|
42
|
+
* @param {Object} session current session object
|
|
43
|
+
* @return {Void}
|
|
44
|
+
*/
|
|
45
|
+
async subscribe(msg: any, session: FrontendSession) {
|
|
46
|
+
let result = {
|
|
47
|
+
topic: 'subscribe',
|
|
48
|
+
payload: JSON.stringify({ code: 200, msg: 'subscribe message is ok.' })
|
|
49
|
+
};
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import {Application, FrontendSession, RemoterClass} from '@bigtyphoon/melo';
|
|
2
|
+
|
|
3
|
+
export default function (app: Application) {
|
|
4
|
+
return new AuthRemoter(app);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
// UserRpc的命名空间自动合并
|
|
8
|
+
declare global {
|
|
9
|
+
interface UserRpc {
|
|
10
|
+
connector: {
|
|
11
|
+
// 一次性定义一个类自动合并到UserRpc中
|
|
12
|
+
authRemoter: RemoterClass<FrontendSession, AuthRemoter>;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
export class AuthRemoter {
|
|
19
|
+
constructor(private app: Application) {
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* 远程rpc方法
|
|
25
|
+
* @param username
|
|
26
|
+
* @param password
|
|
27
|
+
*/
|
|
28
|
+
public async auth(username: string, password: string) {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
public async rpcTest(username: string, password: string) {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
}
|
package/app.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { melo } from '@bigtyphoon/melo';
|
|
2
|
+
import { preload } from './preload';
|
|
3
|
+
import { createBasePlugin } from '@bigtyphoon/melo-base-plugin';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 替换全局Promise
|
|
7
|
+
* 自动解析sourcemap
|
|
8
|
+
* 捕获全局错误
|
|
9
|
+
*/
|
|
10
|
+
preload();
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Init app for client.
|
|
14
|
+
*/
|
|
15
|
+
let app = melo.createApp();
|
|
16
|
+
app.set('name', 'melo-example');
|
|
17
|
+
|
|
18
|
+
// app configuration
|
|
19
|
+
app.configure('production|development', 'connector', function () {
|
|
20
|
+
app.set('connectorConfig',
|
|
21
|
+
{
|
|
22
|
+
connector: melo.connectors.hybridconnector,
|
|
23
|
+
heartbeat: 3,
|
|
24
|
+
useDict: true,
|
|
25
|
+
useProtobuf: true
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
// 载入测试的组件
|
|
30
|
+
app.use(createBasePlugin());
|
|
31
|
+
|
|
32
|
+
// start app
|
|
33
|
+
app.start();
|
|
34
|
+
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Handler = void 0;
|
|
4
|
+
function default_1(app) {
|
|
5
|
+
return new Handler(app);
|
|
6
|
+
}
|
|
7
|
+
exports.default = default_1;
|
|
8
|
+
class Handler {
|
|
9
|
+
constructor(app) {
|
|
10
|
+
this.app = app;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* New client entry.
|
|
14
|
+
*
|
|
15
|
+
* @param {Object} msg request message
|
|
16
|
+
* @param {Object} session current session object
|
|
17
|
+
* @return {Void}
|
|
18
|
+
*/
|
|
19
|
+
async entry(msg, session) {
|
|
20
|
+
return { code: 200, msg: 'game server is ok.' };
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Publish route for mqtt connector.
|
|
24
|
+
*
|
|
25
|
+
* @param {Object} msg request message
|
|
26
|
+
* @param {Object} session current session object
|
|
27
|
+
* @return {Void}
|
|
28
|
+
*/
|
|
29
|
+
async publish(msg, session) {
|
|
30
|
+
let result = {
|
|
31
|
+
topic: 'publish',
|
|
32
|
+
payload: JSON.stringify({ code: 200, msg: 'publish message is ok.' })
|
|
33
|
+
};
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Subscribe route for mqtt connector.
|
|
38
|
+
*
|
|
39
|
+
* @param {Object} msg request message
|
|
40
|
+
* @param {Object} session current session object
|
|
41
|
+
* @return {Void}
|
|
42
|
+
*/
|
|
43
|
+
async subscribe(msg, session) {
|
|
44
|
+
let result = {
|
|
45
|
+
topic: 'subscribe',
|
|
46
|
+
payload: JSON.stringify({ code: 200, msg: 'subscribe message is ok.' })
|
|
47
|
+
};
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.Handler = Handler;
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnlIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vYXBwL3NlcnZlcnMvY29ubmVjdG9yL2hhbmRsZXIvZW50cnlIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLG1CQUF5QixHQUFnQjtJQUNyQyxPQUFPLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLENBQUM7QUFGRCw0QkFFQztBQUVELE1BQWEsT0FBTztJQUNoQixZQUFvQixHQUFnQjtRQUFoQixRQUFHLEdBQUgsR0FBRyxDQUFhO0lBRXBDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQVEsRUFBRSxPQUF3QjtRQUMxQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFRLEVBQUUsT0FBd0I7UUFDNUMsSUFBSSxNQUFNLEdBQUc7WUFDVCxLQUFLLEVBQUUsU0FBUztZQUNoQixPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLHdCQUF3QixFQUFFLENBQUM7U0FDeEUsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQVEsRUFBRSxPQUF3QjtRQUM5QyxJQUFJLE1BQU0sR0FBRztZQUNULEtBQUssRUFBRSxXQUFXO1lBQ2xCLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsMEJBQTBCLEVBQUUsQ0FBQztTQUMxRSxDQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztDQUVKO0FBOUNELDBCQThDQyJ9
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthRemoter = void 0;
|
|
4
|
+
function default_1(app) {
|
|
5
|
+
return new AuthRemoter(app);
|
|
6
|
+
}
|
|
7
|
+
exports.default = default_1;
|
|
8
|
+
class AuthRemoter {
|
|
9
|
+
constructor(app) {
|
|
10
|
+
this.app = app;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 远程rpc方法
|
|
14
|
+
* @param username
|
|
15
|
+
* @param password
|
|
16
|
+
*/
|
|
17
|
+
async auth(username, password) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
async rpcTest(username, password) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.AuthRemoter = AuthRemoter;
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aFJlbW90ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9hcHAvc2VydmVycy9jb25uZWN0b3IvcmVtb3RlL2F1dGhSZW1vdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLG1CQUF5QixHQUFnQjtJQUNyQyxPQUFPLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFGRCw0QkFFQztBQWFELE1BQWEsV0FBVztJQUNwQixZQUFvQixHQUFnQjtRQUFoQixRQUFHLEdBQUgsR0FBRyxDQUFhO0lBRXBDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFnQixFQUFFLFFBQWdCO1FBQ2hELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQWdCLEVBQUUsUUFBZ0I7UUFDbkQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKO0FBakJELGtDQWlCQyJ9
|
package/dist/app.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const melo_1 = require("@bigtyphoon/melo");
|
|
4
|
+
const preload_1 = require("./preload");
|
|
5
|
+
const melo_base_plugin_1 = require("@bigtyphoon/melo-base-plugin");
|
|
6
|
+
/**
|
|
7
|
+
* 替换全局Promise
|
|
8
|
+
* 自动解析sourcemap
|
|
9
|
+
* 捕获全局错误
|
|
10
|
+
*/
|
|
11
|
+
(0, preload_1.preload)();
|
|
12
|
+
/**
|
|
13
|
+
* Init app for client.
|
|
14
|
+
*/
|
|
15
|
+
let app = melo_1.melo.createApp();
|
|
16
|
+
app.set('name', 'melo-example');
|
|
17
|
+
// app configuration
|
|
18
|
+
app.configure('production|development', 'connector', function () {
|
|
19
|
+
app.set('connectorConfig', {
|
|
20
|
+
connector: melo_1.melo.connectors.hybridconnector,
|
|
21
|
+
heartbeat: 3,
|
|
22
|
+
useDict: true,
|
|
23
|
+
useProtobuf: true
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
// 载入测试的组件
|
|
27
|
+
app.use((0, melo_base_plugin_1.createBasePlugin)());
|
|
28
|
+
// start app
|
|
29
|
+
app.start();
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMkNBQXdDO0FBQ3hDLHVDQUFvQztBQUNwQyxtRUFBZ0U7QUFFaEU7Ozs7R0FJRztBQUNILElBQUEsaUJBQU8sR0FBRSxDQUFDO0FBRVY7O0dBRUc7QUFDSCxJQUFJLEdBQUcsR0FBRyxXQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDM0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFFaEMsb0JBQW9CO0FBQ3BCLEdBQUcsQ0FBQyxTQUFTLENBQUMsd0JBQXdCLEVBQUUsV0FBVyxFQUFFO0lBQ2pELEdBQUcsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQ3JCO1FBQ0ksU0FBUyxFQUFFLFdBQUksQ0FBQyxVQUFVLENBQUMsZUFBZTtRQUMxQyxTQUFTLEVBQUUsQ0FBQztRQUNaLE9BQU8sRUFBRSxJQUFJO1FBQ2IsV0FBVyxFQUFFLElBQUk7S0FDcEIsQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDLENBQUM7QUFFSCxVQUFVO0FBQ1YsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFBLG1DQUFnQixHQUFFLENBQUMsQ0FBQztBQUU1QixZQUFZO0FBQ1osR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDIn0=
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "user-1",
|
|
4
|
+
"username": "admin",
|
|
5
|
+
"password": "admin",
|
|
6
|
+
"level": 1
|
|
7
|
+
},
|
|
8
|
+
|
|
9
|
+
{
|
|
10
|
+
"id": "user-2",
|
|
11
|
+
"username": "monitor",
|
|
12
|
+
"password": "monitor",
|
|
13
|
+
"level": 2
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
{
|
|
17
|
+
"id": "user-3",
|
|
18
|
+
"username": "test",
|
|
19
|
+
"password": "test",
|
|
20
|
+
"level": 2
|
|
21
|
+
}
|
|
22
|
+
]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[]
|
|
@@ -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 @@
|
|
|
1
|
+
{}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"development":{
|
|
3
|
+
"connector": [
|
|
4
|
+
{"id": "connector-server-1", "host": "127.0.0.1", "port": 3150, "clientHost": "127.0.0.1", "clientPort": 3010, "frontend": true , "args" : " --inspect=10001"}
|
|
5
|
+
]
|
|
6
|
+
},
|
|
7
|
+
"production":{
|
|
8
|
+
"connector": [
|
|
9
|
+
{"id": "connector-server-1", "host": "127.0.0.1", "port": 3150, "clientHost": "127.0.0.1", "clientPort": 3010, "frontend": true , "args" : " --inspect=10002"}
|
|
10
|
+
]
|
|
11
|
+
}
|
|
12
|
+
}
|
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==
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "melo-simple-example-game-server",
|
|
3
|
+
"version": "1.7.6",
|
|
4
|
+
"private": false,
|
|
5
|
+
"main": "./dist/app",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"build": "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-base-plugin": "^1.7.6",
|
|
20
|
+
"@types/bluebird": "^3.5.19",
|
|
21
|
+
"@types/node": "^16.3.3",
|
|
22
|
+
"bluebird": "^3.5.1",
|
|
23
|
+
"reflect-metadata": "^0.2.2",
|
|
24
|
+
"source-map-support": "^0.5.0"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"tslint": "^6.1.3",
|
|
28
|
+
"typescript": "^4.3.5"
|
|
29
|
+
},
|
|
30
|
+
"gitHead": "7dfd3ca78ed6b051e34da595269efb623cd58d1b"
|
|
31
|
+
}
|
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/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": false, //在表达式和声明上有隐含的'any'类型时报错。
|
|
18
|
+
"noImplicitThis": false,
|
|
19
|
+
"inlineSourceMap": true,
|
|
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
|
+
}
|