@bigtyphoon/melo 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/LICENSE +22 -0
- package/README.md +55 -0
- package/bin/commadtest.ts +10 -0
- package/bin/commands/add.ts +43 -0
- package/bin/commands/init.ts +292 -0
- package/bin/commands/kill.ts +21 -0
- package/bin/commands/list.ts +60 -0
- package/bin/commands/masterha.ts +40 -0
- package/bin/commands/restart.ts +48 -0
- package/bin/commands/start.ts +65 -0
- package/bin/commands/stop.ts +26 -0
- package/bin/melo.ts +30 -0
- package/bin/utils/constants.ts +27 -0
- package/bin/utils/utils.ts +130 -0
- package/dist/bin/commadtest.js +9 -0
- package/dist/bin/commands/add.js +40 -0
- package/dist/bin/commands/init.js +279 -0
- package/dist/bin/commands/kill.js +21 -0
- package/dist/bin/commands/list.js +65 -0
- package/dist/bin/commands/masterha.js +36 -0
- package/dist/bin/commands/restart.js +45 -0
- package/dist/bin/commands/start.js +58 -0
- package/dist/bin/commands/stop.js +20 -0
- package/dist/bin/melo.js +26 -0
- package/dist/bin/utils/constants.js +28 -0
- package/dist/bin/utils/utils.js +134 -0
- package/dist/lib/application.js +888 -0
- package/dist/lib/common/manager/appManager.js +112 -0
- package/dist/lib/common/manager/taskManager.js +39 -0
- package/dist/lib/common/remote/backend/msgRemote.js +63 -0
- package/dist/lib/common/remote/frontend/channelRemote.js +78 -0
- package/dist/lib/common/remote/frontend/sessionRemote.js +76 -0
- package/dist/lib/common/service/backendSessionService.js +337 -0
- package/dist/lib/common/service/channelService.js +514 -0
- package/dist/lib/common/service/connectionService.js +95 -0
- package/dist/lib/common/service/filterService.js +112 -0
- package/dist/lib/common/service/handlerService.js +187 -0
- package/dist/lib/common/service/sessionService.js +610 -0
- package/dist/lib/components/backendSession.js +14 -0
- package/dist/lib/components/channel.js +13 -0
- package/dist/lib/components/connection.js +12 -0
- package/dist/lib/components/connector.js +437 -0
- package/dist/lib/components/dictionary.js +93 -0
- package/dist/lib/components/master.js +39 -0
- package/dist/lib/components/monitor.js +25 -0
- package/dist/lib/components/protobuf.js +156 -0
- package/dist/lib/components/proxy.js +236 -0
- package/dist/lib/components/pushScheduler.js +62 -0
- package/dist/lib/components/remote.js +127 -0
- package/dist/lib/components/server.js +63 -0
- package/dist/lib/components/session.js +20 -0
- package/dist/lib/connectors/commands/handshake.js +119 -0
- package/dist/lib/connectors/commands/heartbeat.js +67 -0
- package/dist/lib/connectors/commands/kick.js +15 -0
- package/dist/lib/connectors/common/coder.js +90 -0
- package/dist/lib/connectors/common/handler.js +57 -0
- package/dist/lib/connectors/hybrid/IHybridSocket.js +3 -0
- package/dist/lib/connectors/hybrid/switcher.js +100 -0
- package/dist/lib/connectors/hybrid/tcpprocessor.js +40 -0
- package/dist/lib/connectors/hybrid/tcpsocket.js +171 -0
- package/dist/lib/connectors/hybrid/wsprocessor.js +49 -0
- package/dist/lib/connectors/hybridconnector.js +89 -0
- package/dist/lib/connectors/hybridsocket.js +139 -0
- package/dist/lib/connectors/mqtt/generate.js +113 -0
- package/dist/lib/connectors/mqtt/mqttadaptor.js +81 -0
- package/dist/lib/connectors/mqtt/protocol.js +48 -0
- package/dist/lib/connectors/mqttconnector.js +107 -0
- package/dist/lib/connectors/mqttsocket.js +59 -0
- package/dist/lib/connectors/sioconnector.js +135 -0
- package/dist/lib/connectors/siosocket.js +69 -0
- package/dist/lib/connectors/udpconnector.js +76 -0
- package/dist/lib/connectors/udpsocket.js +93 -0
- package/dist/lib/filters/handler/serial.js +44 -0
- package/dist/lib/filters/handler/time.js +32 -0
- package/dist/lib/filters/handler/timeout.js +45 -0
- package/dist/lib/filters/handler/toobusy.js +36 -0
- package/dist/lib/filters/rpc/rpcLog.js +43 -0
- package/dist/lib/filters/rpc/toobusy.js +41 -0
- package/dist/lib/index.js +81 -0
- package/dist/lib/interfaces/IComponent.js +3 -0
- package/dist/lib/interfaces/IConnector.js +3 -0
- package/dist/lib/interfaces/IHandlerFilter.js +3 -0
- package/dist/lib/interfaces/ILifeCycle.js +3 -0
- package/dist/lib/interfaces/IPlugin.js +3 -0
- package/dist/lib/interfaces/IPushScheduler.js +3 -0
- package/dist/lib/interfaces/ISocket.js +3 -0
- package/dist/lib/interfaces/IStore.js +3 -0
- package/dist/lib/interfaces/define.js +3 -0
- package/dist/lib/master/master.js +129 -0
- package/dist/lib/master/starter.js +236 -0
- package/dist/lib/master/watchdog.js +120 -0
- package/dist/lib/melo.js +125 -0
- package/dist/lib/modules/console.js +436 -0
- package/dist/lib/modules/masterwatcher.js +98 -0
- package/dist/lib/modules/monitorwatcher.js +124 -0
- package/dist/lib/modules/onlineUser.js +69 -0
- package/dist/lib/modules/restartNotifyModule.js +107 -0
- package/dist/lib/modules/watchServer.js +737 -0
- package/dist/lib/monitor/monitor.js +80 -0
- package/dist/lib/pushSchedulers/buffer.js +96 -0
- package/dist/lib/pushSchedulers/direct.js +58 -0
- package/dist/lib/pushSchedulers/multi.js +80 -0
- package/dist/lib/server/server.js +500 -0
- package/dist/lib/util/appUtil.js +306 -0
- package/dist/lib/util/constants.js +117 -0
- package/dist/lib/util/countDownLatch.js +51 -0
- package/dist/lib/util/events.js +20 -0
- package/dist/lib/util/handlerHelper.js +8 -0
- package/dist/lib/util/log.js +14 -0
- package/dist/lib/util/moduleUtil.js +101 -0
- package/dist/lib/util/pathUtil.js +134 -0
- package/dist/lib/util/remoterHelper.js +8 -0
- package/dist/lib/util/utils.js +358 -0
- package/dist/test/application.js +522 -0
- package/dist/test/config/log4js.json +28 -0
- package/dist/test/config/master.json +9 -0
- package/dist/test/config/servers.json +6 -0
- package/dist/test/filters/handler/serial.js +41 -0
- package/dist/test/filters/handler/time.js +41 -0
- package/dist/test/filters/handler/timeout.js +41 -0
- package/dist/test/filters/handler/toobusy.js +57 -0
- package/dist/test/filters/rpc/rpcLog.js +22 -0
- package/dist/test/filters/rpc/toobusy.js +39 -0
- package/dist/test/manager/mockChannelManager.js +77 -0
- package/dist/test/manager/taskManager.js +68 -0
- package/dist/test/mock-base/app/servers/other-file +0 -0
- package/dist/test/mock-plugin/components/mockPlugin.js +10 -0
- package/dist/test/mock-plugin/events/mockEvent.js +12 -0
- package/dist/test/modules/console.js +242 -0
- package/dist/test/pomelo.js +19 -0
- package/dist/test/remote/channelRemote.js +159 -0
- package/dist/test/service/channel.js +134 -0
- package/dist/test/service/channelService.js +216 -0
- package/dist/test/service/connectionService.js +114 -0
- package/dist/test/service/filterService.js +144 -0
- package/dist/test/service/handlerService.js +65 -0
- package/dist/test/service/sessionService.js +387 -0
- package/dist/test/util/countDownLatch.js +70 -0
- package/dist/test/util/pathUtil.js +108 -0
- package/dist/test/util/utils.js +140 -0
- package/lib/application.ts +1240 -0
- package/lib/common/manager/appManager.ts +118 -0
- package/lib/common/manager/taskManager.ts +50 -0
- package/lib/common/remote/backend/msgRemote.ts +134 -0
- package/lib/common/remote/frontend/channelRemote.ts +91 -0
- package/lib/common/remote/frontend/sessionRemote.ts +91 -0
- package/lib/common/service/backendSessionService.ts +388 -0
- package/lib/common/service/channelService.ts +609 -0
- package/lib/common/service/connectionService.ts +112 -0
- package/lib/common/service/filterService.ts +118 -0
- package/lib/common/service/handlerService.ts +224 -0
- package/lib/common/service/sessionService.ts +731 -0
- package/lib/components/backendSession.ts +14 -0
- package/lib/components/channel.ts +11 -0
- package/lib/components/connection.ts +13 -0
- package/lib/components/connector.ts +533 -0
- package/lib/components/dictionary.ts +121 -0
- package/lib/components/master.ts +41 -0
- package/lib/components/monitor.ts +30 -0
- package/lib/components/protobuf.ts +208 -0
- package/lib/components/proxy.ts +282 -0
- package/lib/components/pushScheduler.ts +70 -0
- package/lib/components/remote.ts +166 -0
- package/lib/components/server.ts +71 -0
- package/lib/components/session.ts +22 -0
- package/lib/connectors/commands/handshake.ts +155 -0
- package/lib/connectors/commands/heartbeat.ts +83 -0
- package/lib/connectors/commands/kick.ts +11 -0
- package/lib/connectors/common/coder.ts +93 -0
- package/lib/connectors/common/handler.ts +62 -0
- package/lib/connectors/hybrid/IHybridSocket.ts +9 -0
- package/lib/connectors/hybrid/switcher.ts +142 -0
- package/lib/connectors/hybrid/tcpprocessor.ts +43 -0
- package/lib/connectors/hybrid/tcpsocket.ts +223 -0
- package/lib/connectors/hybrid/wsprocessor.ts +57 -0
- package/lib/connectors/hybridconnector.ts +134 -0
- package/lib/connectors/hybridsocket.ts +168 -0
- package/lib/connectors/mqtt/generate.ts +103 -0
- package/lib/connectors/mqtt/mqttadaptor.ts +114 -0
- package/lib/connectors/mqtt/protocol.ts +49 -0
- package/lib/connectors/mqttconnector.ts +134 -0
- package/lib/connectors/mqttsocket.ts +79 -0
- package/lib/connectors/sioconnector.ts +161 -0
- package/lib/connectors/siosocket.ts +85 -0
- package/lib/connectors/udpconnector.ts +113 -0
- package/lib/connectors/udpsocket.ts +110 -0
- package/lib/filters/handler/serial.ts +46 -0
- package/lib/filters/handler/time.ts +35 -0
- package/lib/filters/handler/timeout.ts +50 -0
- package/lib/filters/handler/toobusy.ts +37 -0
- package/lib/filters/rpc/rpcLog.ts +42 -0
- package/lib/filters/rpc/toobusy.ts +41 -0
- package/lib/index.ts +74 -0
- package/lib/interfaces/IComponent.ts +47 -0
- package/lib/interfaces/IConnector.ts +20 -0
- package/lib/interfaces/IHandlerFilter.ts +15 -0
- package/lib/interfaces/ILifeCycle.ts +16 -0
- package/lib/interfaces/IPlugin.ts +65 -0
- package/lib/interfaces/IPushScheduler.ts +52 -0
- package/lib/interfaces/ISocket.ts +26 -0
- package/lib/interfaces/IStore.ts +10 -0
- package/lib/interfaces/define.ts +15 -0
- package/lib/master/master.ts +148 -0
- package/lib/master/starter.ts +234 -0
- package/lib/master/watchdog.ts +135 -0
- package/lib/melo.ts +152 -0
- package/lib/modules/console.ts +465 -0
- package/lib/modules/masterwatcher.ts +120 -0
- package/lib/modules/monitorwatcher.ts +151 -0
- package/lib/modules/onlineUser.ts +78 -0
- package/lib/modules/restartNotifyModule.ts +128 -0
- package/lib/modules/watchServer.ts +766 -0
- package/lib/monitor/monitor.ts +99 -0
- package/lib/pushSchedulers/buffer.ts +117 -0
- package/lib/pushSchedulers/direct.ts +65 -0
- package/lib/pushSchedulers/multi.ts +94 -0
- package/lib/server/server.ts +554 -0
- package/lib/util/appUtil.ts +313 -0
- package/lib/util/constants.ts +154 -0
- package/lib/util/countDownLatch.ts +72 -0
- package/lib/util/events.ts +15 -0
- package/lib/util/handlerHelper.ts +5 -0
- package/lib/util/log.ts +11 -0
- package/lib/util/moduleUtil.ts +110 -0
- package/lib/util/pathUtil.ts +132 -0
- package/lib/util/remoterHelper.ts +68 -0
- package/lib/util/utils.ts +365 -0
- package/package.json +93 -0
- package/template/game-server/.vscode/launch.json +27 -0
- package/template/game-server/app/servers/connector/handler/entryHandler.ts +50 -0
- package/template/game-server/app/servers/connector/remote/authRemoter.ts +36 -0
- package/template/game-server/app.ts +30 -0
- package/template/game-server/app.ts.mqtt +32 -0
- package/template/game-server/app.ts.sio +36 -0
- package/template/game-server/app.ts.sio.wss +34 -0
- package/template/game-server/app.ts.udp +31 -0
- package/template/game-server/app.ts.wss +40 -0
- package/template/game-server/config/adminServer.json +5 -0
- package/template/game-server/config/adminUser.json +22 -0
- package/template/game-server/config/clientProtos.json +1 -0
- package/template/game-server/config/dictionary.json +1 -0
- package/template/game-server/config/log4js.json +150 -0
- package/template/game-server/config/master.json +8 -0
- package/template/game-server/config/serverProtos.json +1 -0
- package/template/game-server/config/servers.json +12 -0
- package/template/game-server/copy.js +5 -0
- package/template/game-server/package.json +28 -0
- package/template/game-server/preload.ts +40 -0
- package/template/game-server/tsconfig.json +36 -0
- package/template/npm-install.bat +4 -0
- package/template/npm-install.sh +5 -0
- package/template/readme.md +31 -0
- package/template/shared/server.crt +15 -0
- package/template/shared/server.key +15 -0
- package/template/web-server/app.js +25 -0
- package/template/web-server/app.js.https +36 -0
- package/template/web-server/bin/component.bat +1 -0
- package/template/web-server/bin/component.sh +1 -0
- package/template/web-server/package.json +10 -0
- package/template/web-server/public/css/base.css +76 -0
- package/template/web-server/public/image/logo.png +0 -0
- package/template/web-server/public/image/sp.png +0 -0
- package/template/web-server/public/index.html +57 -0
- package/template/web-server/public/index.html.sio +58 -0
- package/template/web-server/public/js/lib/build/build.js +1730 -0
- package/template/web-server/public/js/lib/build/build.js.wss +1721 -0
- package/template/web-server/public/js/lib/component.json +6 -0
- package/template/web-server/public/js/lib/local/boot/component.json +11 -0
- package/template/web-server/public/js/lib/local/boot/index.js +11 -0
- package/template/web-server/public/js/lib/meloclient.js +456 -0
- package/template/web-server/public/js/lib/meloclient.js.wss +456 -0
- package/template/web-server/public/js/lib/socket.io.js +3 -0
- package/test/application.ts +607 -0
- package/test/filters/handler/serial.ts +47 -0
- package/test/filters/handler/time.ts +47 -0
- package/test/filters/handler/timeout.ts +46 -0
- package/test/filters/handler/toobusy.ts +59 -0
- package/test/filters/rpc/rpcLog.ts +20 -0
- package/test/filters/rpc/toobusy.ts +40 -0
- package/test/manager/mockChannelManager.ts +92 -0
- package/test/manager/taskManager.ts +78 -0
- package/test/mock-base/app/servers/other-file +0 -0
- package/test/mock-plugin/components/mockPlugin.ts +8 -0
- package/test/mock-plugin/events/mockEvent.ts +12 -0
- package/test/modules/console.ts +264 -0
- package/test/pomelo.ts +18 -0
- package/test/remote/channelRemote.ts +176 -0
- package/test/service/channel.ts +161 -0
- package/test/service/channelService.ts +243 -0
- package/test/service/connectionService.ts +142 -0
- package/test/service/filterService.ts +165 -0
- package/test/service/handlerService.ts +77 -0
- package/test/service/sessionService.ts +464 -0
- package/test/util/countDownLatch.ts +81 -0
- package/test/util/pathUtil.ts +122 -0
- package/test/util/utils.ts +165 -0
|
@@ -0,0 +1,50 @@
|
|
|
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
|
+
*/
|
|
18
|
+
async entry(msg: any, session: FrontendSession) {
|
|
19
|
+
return { code: 200, msg: 'game server is ok.' };
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Publish route for mqtt connector.
|
|
24
|
+
*
|
|
25
|
+
* @param {Object} msg request message
|
|
26
|
+
* @param {Object} session current session object
|
|
27
|
+
*/
|
|
28
|
+
async publish(msg: any, session: FrontendSession) {
|
|
29
|
+
let result = {
|
|
30
|
+
topic: 'publish',
|
|
31
|
+
payload: JSON.stringify({ code: 200, msg: 'publish message is ok.' })
|
|
32
|
+
};
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Subscribe route for mqtt connector.
|
|
38
|
+
*
|
|
39
|
+
* @param {Object} msg request message
|
|
40
|
+
* @param {Object} session current session object
|
|
41
|
+
*/
|
|
42
|
+
async subscribe(msg: any, session: FrontendSession) {
|
|
43
|
+
let result = {
|
|
44
|
+
topic: 'subscribe',
|
|
45
|
+
payload: JSON.stringify({ code: 200, msg: 'subscribe message is ok.' })
|
|
46
|
+
};
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import {Application, RemoterClass, FrontendSession} 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
|
+
*
|
|
25
|
+
* @param username
|
|
26
|
+
* @param password
|
|
27
|
+
*/
|
|
28
|
+
public async auth(username: string , password: string) {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// 私有方法不会加入到RPC提示里
|
|
33
|
+
private async privateMethod(testarg:string,arg2:number){
|
|
34
|
+
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { melo } from '@bigtyphoon/melo';
|
|
2
|
+
import { preload } from './preload';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 替换全局Promise
|
|
6
|
+
* 自动解析sourcemap
|
|
7
|
+
* 捕获全局错误
|
|
8
|
+
*/
|
|
9
|
+
preload();
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Init app for client.
|
|
13
|
+
*/
|
|
14
|
+
let app = melo.createApp();
|
|
15
|
+
app.set('name', '$');
|
|
16
|
+
|
|
17
|
+
// app configuration
|
|
18
|
+
app.configure('production|development', 'connector', function () {
|
|
19
|
+
app.set('connectorConfig',
|
|
20
|
+
{
|
|
21
|
+
connector: melo.connectors.hybridconnector,
|
|
22
|
+
heartbeat: 3,
|
|
23
|
+
useDict: true,
|
|
24
|
+
useProtobuf: true
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
// start app
|
|
29
|
+
app.start();
|
|
30
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { melo } from '@bigtyphoon/melo';
|
|
2
|
+
import { preload } from './preload';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 替换全局Promise
|
|
6
|
+
* 自动解析sourcemap
|
|
7
|
+
* 捕获全局错误
|
|
8
|
+
*/
|
|
9
|
+
preload();
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Init app for client.
|
|
13
|
+
*/
|
|
14
|
+
var app = melo.createApp();
|
|
15
|
+
app.set('name', '$');
|
|
16
|
+
|
|
17
|
+
// app configuration
|
|
18
|
+
app.configure('production|development', 'connector', function(){
|
|
19
|
+
app.set('connectorConfig',
|
|
20
|
+
{
|
|
21
|
+
connector : melo.connectors.mqttconnector,
|
|
22
|
+
publishRoute: 'connector.entryHandler.publish',
|
|
23
|
+
subscribeRoute: 'connector.entryHandler.subscribe'
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
// start app
|
|
28
|
+
app.start();
|
|
29
|
+
|
|
30
|
+
process.on('uncaughtException', function (err) {
|
|
31
|
+
console.error(' Caught exception: ' + err.stack);
|
|
32
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { melo } from '@bigtyphoon/melo';
|
|
2
|
+
import { preload } from './preload';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 替换全局Promise
|
|
6
|
+
* 自动解析sourcemap
|
|
7
|
+
* 捕获全局错误
|
|
8
|
+
*/
|
|
9
|
+
preload();
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Init app for client.
|
|
13
|
+
*/
|
|
14
|
+
var app = melo.createApp();
|
|
15
|
+
app.set('name', '$');
|
|
16
|
+
|
|
17
|
+
// app configuration
|
|
18
|
+
app.configure('production|development', 'connector', function(){
|
|
19
|
+
app.set('connectorConfig',
|
|
20
|
+
{
|
|
21
|
+
connector : melo.connectors.sioconnector,
|
|
22
|
+
// 'websocket', 'polling-xhr', 'polling-jsonp', 'polling'
|
|
23
|
+
transports : ['websocket', 'polling'],
|
|
24
|
+
heartbeats : true,
|
|
25
|
+
closeTimeout : 60 * 1000,
|
|
26
|
+
heartbeatTimeout : 60 * 1000,
|
|
27
|
+
heartbeatInterval : 25 * 1000
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// start app
|
|
32
|
+
app.start();
|
|
33
|
+
|
|
34
|
+
process.on('uncaughtException', function (err) {
|
|
35
|
+
console.error(' Caught exception: ' + err.stack);
|
|
36
|
+
});
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { melo } from '@bigtyphoon/melo';
|
|
2
|
+
import { preload } from './preload';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 替换全局Promise
|
|
6
|
+
* 自动解析sourcemap
|
|
7
|
+
* 捕获全局错误
|
|
8
|
+
*/
|
|
9
|
+
preload();
|
|
10
|
+
|
|
11
|
+
var fs = require('fs');
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Init app for client.
|
|
15
|
+
*/
|
|
16
|
+
var app = melo.createApp();
|
|
17
|
+
app.set('name', '$');
|
|
18
|
+
|
|
19
|
+
// app configuration
|
|
20
|
+
app.configure('production|development', function(){
|
|
21
|
+
app.set('connectorConfig',
|
|
22
|
+
{
|
|
23
|
+
connector : melo.connectors.sioconnector,
|
|
24
|
+
key: fs.readFileSync('../../shared/server.key'),
|
|
25
|
+
cert: fs.readFileSync('../../shared/server.crt')
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
// start app
|
|
30
|
+
app.start();
|
|
31
|
+
|
|
32
|
+
process.on('uncaughtException', function (err) {
|
|
33
|
+
console.error(' Caught exception: ' + err.stack);
|
|
34
|
+
});
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { melo } from '@bigtyphoon/melo';
|
|
2
|
+
import { preload } from './preload';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 替换全局Promise
|
|
6
|
+
* 自动解析sourcemap
|
|
7
|
+
* 捕获全局错误
|
|
8
|
+
*/
|
|
9
|
+
preload();
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Init app for client.
|
|
13
|
+
*/
|
|
14
|
+
var app = melo.createApp();
|
|
15
|
+
app.set('name', '$');
|
|
16
|
+
|
|
17
|
+
// app configuration
|
|
18
|
+
app.configure('production|development', function(){
|
|
19
|
+
app.set('connectorConfig',
|
|
20
|
+
{
|
|
21
|
+
connector : melo.connectors.udpconnector,
|
|
22
|
+
heartbeat : 3
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
// start app
|
|
27
|
+
app.start();
|
|
28
|
+
|
|
29
|
+
process.on('uncaughtException', function (err) {
|
|
30
|
+
console.error(' Caught exception: ' + err.stack);
|
|
31
|
+
});
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { melo } from '@bigtyphoon/melo';
|
|
2
|
+
import { preload } from './preload';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 替换全局Promise
|
|
6
|
+
* 自动解析sourcemap
|
|
7
|
+
* 捕获全局错误
|
|
8
|
+
*/
|
|
9
|
+
preload();
|
|
10
|
+
|
|
11
|
+
var fs = require('fs');
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Init app for client.
|
|
15
|
+
*/
|
|
16
|
+
var app = melo.createApp();
|
|
17
|
+
app.set('name', '$');
|
|
18
|
+
|
|
19
|
+
// app configuration
|
|
20
|
+
app.configure('production|development', 'connector', function(){
|
|
21
|
+
app.set('connectorConfig',
|
|
22
|
+
{
|
|
23
|
+
connector : melo.connectors.hybridconnector,
|
|
24
|
+
heartbeat : 3,
|
|
25
|
+
useDict : true,
|
|
26
|
+
useProtobuf : true,
|
|
27
|
+
ssl: {
|
|
28
|
+
type: 'wss',
|
|
29
|
+
key: fs.readFileSync('../../shared/server.key'),
|
|
30
|
+
cert: fs.readFileSync('../../shared/server.crt')
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
// start app
|
|
36
|
+
app.start();
|
|
37
|
+
|
|
38
|
+
process.on('uncaughtException', function (err) {
|
|
39
|
+
console.error(' Caught exception: ' + err.stack);
|
|
40
|
+
});
|
|
@@ -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
|
+
"melo": {
|
|
62
|
+
"type": "file",
|
|
63
|
+
"filename": "${opts:base}/logs/melo-${opts:serverId}.log",
|
|
64
|
+
"maxLogSize": 1048576,
|
|
65
|
+
"layout": {
|
|
66
|
+
"type": "basic"
|
|
67
|
+
},
|
|
68
|
+
"backups": 5
|
|
69
|
+
},
|
|
70
|
+
"melo-admin": {
|
|
71
|
+
"type": "file",
|
|
72
|
+
"filename": "${opts:base}/logs/melo-admin.log",
|
|
73
|
+
"maxLogSize": 1048576,
|
|
74
|
+
"layout": {
|
|
75
|
+
"type": "basic"
|
|
76
|
+
},
|
|
77
|
+
"backups": 5
|
|
78
|
+
},
|
|
79
|
+
"melo-rpc": {
|
|
80
|
+
"type": "file",
|
|
81
|
+
"filename": "${opts:base}/logs/melo-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
|
+
"melo"
|
|
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
|
+
"melo-admin": {
|
|
134
|
+
"appenders": [
|
|
135
|
+
"melo-admin"
|
|
136
|
+
],
|
|
137
|
+
"level": "debug"
|
|
138
|
+
},
|
|
139
|
+
"melo-rpc": {
|
|
140
|
+
"appenders": [
|
|
141
|
+
"melo-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
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name":"__melo_app_name__",
|
|
3
|
+
"version":"0.0.1",
|
|
4
|
+
"private":false,
|
|
5
|
+
|
|
6
|
+
"bin": {
|
|
7
|
+
"__melo_app_name__": "./dist/bin/app.js"
|
|
8
|
+
},
|
|
9
|
+
"main": "./dist/app",
|
|
10
|
+
"scripts": {
|
|
11
|
+
"start": "npm run build && cd dist && node app",
|
|
12
|
+
"build": "tsc && node copy"
|
|
13
|
+
},
|
|
14
|
+
"dependencies":{
|
|
15
|
+
"@types/node": "^16.3.3",
|
|
16
|
+
"@types/bluebird": "^3.5.19",
|
|
17
|
+
"@bigtyphoon/melo":"__melo_app_version__",
|
|
18
|
+
"bluebird": "^3.5.1",
|
|
19
|
+
"source-map-support": "^0.5.0",
|
|
20
|
+
"reflect-metadata": "^0.1.13"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"cpy": "^8.1.0",
|
|
24
|
+
"tslint": "6.1.3",
|
|
25
|
+
"typescript": "^4.3.5"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
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
|
+
"es2017",
|
|
15
|
+
"esnext.asynciterable",
|
|
16
|
+
"DOM"
|
|
17
|
+
],
|
|
18
|
+
"noImplicitAny": false, //在表达式和声明上有隐含的'any'类型时报错。
|
|
19
|
+
"noImplicitThis": false,
|
|
20
|
+
"inlineSourceMap": true,
|
|
21
|
+
"newLine": "lf", // 统一跨平台下编译文件的换行符
|
|
22
|
+
|
|
23
|
+
"rootDirs": ["."], //仅用来控制输出的目录结构--outDir。
|
|
24
|
+
"outDir": "./dist", //重定向输出目录。
|
|
25
|
+
"experimentalDecorators": true,
|
|
26
|
+
"emitDecoratorMetadata": true,
|
|
27
|
+
"moduleResolution": "node"
|
|
28
|
+
},
|
|
29
|
+
"include": [
|
|
30
|
+
"./**/*.ts"
|
|
31
|
+
],
|
|
32
|
+
"exclude": [
|
|
33
|
+
"./dist/**/*.*",
|
|
34
|
+
"node_modules"
|
|
35
|
+
]
|
|
36
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
这是melo的简单示例工程,包含:
|
|
2
|
+
1、game-server,游戏服务器
|
|
3
|
+
2、web-server,网页客户端的服务
|
|
4
|
+
|
|
5
|
+
启动方法:
|
|
6
|
+
1、执行npm-install.bat或npm-install.sh
|
|
7
|
+
2、编译游戏服
|
|
8
|
+
cd game-server
|
|
9
|
+
npm run build
|
|
10
|
+
2、启动游戏服
|
|
11
|
+
cd dist
|
|
12
|
+
node app
|
|
13
|
+
显示“all servers startup in xxx ms”即表示启动成功
|
|
14
|
+
|
|
15
|
+
3、启动网页服务器
|
|
16
|
+
cd web-server
|
|
17
|
+
node app
|
|
18
|
+
显示“Please log on http://127.0.0.1:3001/index.html”即表示启动成功
|
|
19
|
+
|
|
20
|
+
4、进入客户端网页
|
|
21
|
+
浏览器输入
|
|
22
|
+
http://127.0.0.1:3001/index.html
|
|
23
|
+
点击“Test Game Server”,如返回“game server is ok.”即表示连接游戏服务器返回成功
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
调试游戏服务器的方法:
|
|
27
|
+
1、安装vscode
|
|
28
|
+
2、在game-server目录启动vscode
|
|
29
|
+
3、按照正常流程启动游戏服
|
|
30
|
+
4、在“调试”界面,选择Attach To Connector或Attach To Master
|
|
31
|
+
5、按F5把调试器挂上去,然后就可以断点调试了。
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIICSzCCAbQCCQCQVN8rD6MylDANBgkqhkiG9w0BAQUFADBqMQswCQYDVQQGEwJD
|
|
3
|
+
TjERMA8GA1UECAwIemhlamlhbmcxETAPBgNVBAcMCGhhbmd6aG91MRAwDgYDVQQK
|
|
4
|
+
DAdOZXRFYXNlMQ8wDQYDVQQLDAZwb21lbG8xEjAQBgNVBAMMCWxvY2FsaG9zdDAe
|
|
5
|
+
Fw0xNDA0MjIwNjEwMDJaFw0xNDA1MjIwNjEwMDJaMGoxCzAJBgNVBAYTAkNOMREw
|
|
6
|
+
DwYDVQQIDAh6aGVqaWFuZzERMA8GA1UEBwwIaGFuZ3pob3UxEDAOBgNVBAoMB05l
|
|
7
|
+
dEVhc2UxDzANBgNVBAsMBnBvbWVsbzESMBAGA1UEAwwJbG9jYWxob3N0MIGfMA0G
|
|
8
|
+
CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMPe8oscKpTlQFZRrpbWmSO1UE+H65nq50
|
|
9
|
+
l5+ptOVPMK3wgEj+YRyGWhBjugj9teVmLXY9ImWdZkBlvdAiQj7/S/1MxRbRtwEF
|
|
10
|
+
GRE5ul/X1M6I+F0UyTGYA1Mo0jIlQaBDXAAyDujCWi+qlyZ28efNDUlO2KBY1H4r
|
|
11
|
+
Xobm9hoEFQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAMIuL8KqEEtjbfL/tR2+5dQ5
|
|
12
|
+
958gtDtA62L7bMosl4hmuzdyWADu3IcKSaXAESLhIuIClt2Pwc14iFf9qRyB/cjY
|
|
13
|
+
4kLgwDGhK5EJw1kQS+Hs9NNSGxJTXUkoms3kEdRGy4hrZpTheJJNaKuv3oXrdvYQ
|
|
14
|
+
85yoc/P5OnJapB3huYL9
|
|
15
|
+
-----END CERTIFICATE-----
|