@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.
Files changed (296) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +55 -0
  3. package/bin/commadtest.ts +10 -0
  4. package/bin/commands/add.ts +43 -0
  5. package/bin/commands/init.ts +292 -0
  6. package/bin/commands/kill.ts +21 -0
  7. package/bin/commands/list.ts +60 -0
  8. package/bin/commands/masterha.ts +40 -0
  9. package/bin/commands/restart.ts +48 -0
  10. package/bin/commands/start.ts +65 -0
  11. package/bin/commands/stop.ts +26 -0
  12. package/bin/melo.ts +30 -0
  13. package/bin/utils/constants.ts +27 -0
  14. package/bin/utils/utils.ts +130 -0
  15. package/dist/bin/commadtest.js +9 -0
  16. package/dist/bin/commands/add.js +40 -0
  17. package/dist/bin/commands/init.js +279 -0
  18. package/dist/bin/commands/kill.js +21 -0
  19. package/dist/bin/commands/list.js +65 -0
  20. package/dist/bin/commands/masterha.js +36 -0
  21. package/dist/bin/commands/restart.js +45 -0
  22. package/dist/bin/commands/start.js +58 -0
  23. package/dist/bin/commands/stop.js +20 -0
  24. package/dist/bin/melo.js +26 -0
  25. package/dist/bin/utils/constants.js +28 -0
  26. package/dist/bin/utils/utils.js +134 -0
  27. package/dist/lib/application.js +888 -0
  28. package/dist/lib/common/manager/appManager.js +112 -0
  29. package/dist/lib/common/manager/taskManager.js +39 -0
  30. package/dist/lib/common/remote/backend/msgRemote.js +63 -0
  31. package/dist/lib/common/remote/frontend/channelRemote.js +78 -0
  32. package/dist/lib/common/remote/frontend/sessionRemote.js +76 -0
  33. package/dist/lib/common/service/backendSessionService.js +337 -0
  34. package/dist/lib/common/service/channelService.js +514 -0
  35. package/dist/lib/common/service/connectionService.js +95 -0
  36. package/dist/lib/common/service/filterService.js +112 -0
  37. package/dist/lib/common/service/handlerService.js +187 -0
  38. package/dist/lib/common/service/sessionService.js +610 -0
  39. package/dist/lib/components/backendSession.js +14 -0
  40. package/dist/lib/components/channel.js +13 -0
  41. package/dist/lib/components/connection.js +12 -0
  42. package/dist/lib/components/connector.js +437 -0
  43. package/dist/lib/components/dictionary.js +93 -0
  44. package/dist/lib/components/master.js +39 -0
  45. package/dist/lib/components/monitor.js +25 -0
  46. package/dist/lib/components/protobuf.js +156 -0
  47. package/dist/lib/components/proxy.js +236 -0
  48. package/dist/lib/components/pushScheduler.js +62 -0
  49. package/dist/lib/components/remote.js +127 -0
  50. package/dist/lib/components/server.js +63 -0
  51. package/dist/lib/components/session.js +20 -0
  52. package/dist/lib/connectors/commands/handshake.js +119 -0
  53. package/dist/lib/connectors/commands/heartbeat.js +67 -0
  54. package/dist/lib/connectors/commands/kick.js +15 -0
  55. package/dist/lib/connectors/common/coder.js +90 -0
  56. package/dist/lib/connectors/common/handler.js +57 -0
  57. package/dist/lib/connectors/hybrid/IHybridSocket.js +3 -0
  58. package/dist/lib/connectors/hybrid/switcher.js +100 -0
  59. package/dist/lib/connectors/hybrid/tcpprocessor.js +40 -0
  60. package/dist/lib/connectors/hybrid/tcpsocket.js +171 -0
  61. package/dist/lib/connectors/hybrid/wsprocessor.js +49 -0
  62. package/dist/lib/connectors/hybridconnector.js +89 -0
  63. package/dist/lib/connectors/hybridsocket.js +139 -0
  64. package/dist/lib/connectors/mqtt/generate.js +113 -0
  65. package/dist/lib/connectors/mqtt/mqttadaptor.js +81 -0
  66. package/dist/lib/connectors/mqtt/protocol.js +48 -0
  67. package/dist/lib/connectors/mqttconnector.js +107 -0
  68. package/dist/lib/connectors/mqttsocket.js +59 -0
  69. package/dist/lib/connectors/sioconnector.js +135 -0
  70. package/dist/lib/connectors/siosocket.js +69 -0
  71. package/dist/lib/connectors/udpconnector.js +76 -0
  72. package/dist/lib/connectors/udpsocket.js +93 -0
  73. package/dist/lib/filters/handler/serial.js +44 -0
  74. package/dist/lib/filters/handler/time.js +32 -0
  75. package/dist/lib/filters/handler/timeout.js +45 -0
  76. package/dist/lib/filters/handler/toobusy.js +36 -0
  77. package/dist/lib/filters/rpc/rpcLog.js +43 -0
  78. package/dist/lib/filters/rpc/toobusy.js +41 -0
  79. package/dist/lib/index.js +81 -0
  80. package/dist/lib/interfaces/IComponent.js +3 -0
  81. package/dist/lib/interfaces/IConnector.js +3 -0
  82. package/dist/lib/interfaces/IHandlerFilter.js +3 -0
  83. package/dist/lib/interfaces/ILifeCycle.js +3 -0
  84. package/dist/lib/interfaces/IPlugin.js +3 -0
  85. package/dist/lib/interfaces/IPushScheduler.js +3 -0
  86. package/dist/lib/interfaces/ISocket.js +3 -0
  87. package/dist/lib/interfaces/IStore.js +3 -0
  88. package/dist/lib/interfaces/define.js +3 -0
  89. package/dist/lib/master/master.js +129 -0
  90. package/dist/lib/master/starter.js +236 -0
  91. package/dist/lib/master/watchdog.js +120 -0
  92. package/dist/lib/melo.js +125 -0
  93. package/dist/lib/modules/console.js +436 -0
  94. package/dist/lib/modules/masterwatcher.js +98 -0
  95. package/dist/lib/modules/monitorwatcher.js +124 -0
  96. package/dist/lib/modules/onlineUser.js +69 -0
  97. package/dist/lib/modules/restartNotifyModule.js +107 -0
  98. package/dist/lib/modules/watchServer.js +737 -0
  99. package/dist/lib/monitor/monitor.js +80 -0
  100. package/dist/lib/pushSchedulers/buffer.js +96 -0
  101. package/dist/lib/pushSchedulers/direct.js +58 -0
  102. package/dist/lib/pushSchedulers/multi.js +80 -0
  103. package/dist/lib/server/server.js +500 -0
  104. package/dist/lib/util/appUtil.js +306 -0
  105. package/dist/lib/util/constants.js +117 -0
  106. package/dist/lib/util/countDownLatch.js +51 -0
  107. package/dist/lib/util/events.js +20 -0
  108. package/dist/lib/util/handlerHelper.js +8 -0
  109. package/dist/lib/util/log.js +14 -0
  110. package/dist/lib/util/moduleUtil.js +101 -0
  111. package/dist/lib/util/pathUtil.js +134 -0
  112. package/dist/lib/util/remoterHelper.js +8 -0
  113. package/dist/lib/util/utils.js +358 -0
  114. package/dist/test/application.js +522 -0
  115. package/dist/test/config/log4js.json +28 -0
  116. package/dist/test/config/master.json +9 -0
  117. package/dist/test/config/servers.json +6 -0
  118. package/dist/test/filters/handler/serial.js +41 -0
  119. package/dist/test/filters/handler/time.js +41 -0
  120. package/dist/test/filters/handler/timeout.js +41 -0
  121. package/dist/test/filters/handler/toobusy.js +57 -0
  122. package/dist/test/filters/rpc/rpcLog.js +22 -0
  123. package/dist/test/filters/rpc/toobusy.js +39 -0
  124. package/dist/test/manager/mockChannelManager.js +77 -0
  125. package/dist/test/manager/taskManager.js +68 -0
  126. package/dist/test/mock-base/app/servers/other-file +0 -0
  127. package/dist/test/mock-plugin/components/mockPlugin.js +10 -0
  128. package/dist/test/mock-plugin/events/mockEvent.js +12 -0
  129. package/dist/test/modules/console.js +242 -0
  130. package/dist/test/pomelo.js +19 -0
  131. package/dist/test/remote/channelRemote.js +159 -0
  132. package/dist/test/service/channel.js +134 -0
  133. package/dist/test/service/channelService.js +216 -0
  134. package/dist/test/service/connectionService.js +114 -0
  135. package/dist/test/service/filterService.js +144 -0
  136. package/dist/test/service/handlerService.js +65 -0
  137. package/dist/test/service/sessionService.js +387 -0
  138. package/dist/test/util/countDownLatch.js +70 -0
  139. package/dist/test/util/pathUtil.js +108 -0
  140. package/dist/test/util/utils.js +140 -0
  141. package/lib/application.ts +1240 -0
  142. package/lib/common/manager/appManager.ts +118 -0
  143. package/lib/common/manager/taskManager.ts +50 -0
  144. package/lib/common/remote/backend/msgRemote.ts +134 -0
  145. package/lib/common/remote/frontend/channelRemote.ts +91 -0
  146. package/lib/common/remote/frontend/sessionRemote.ts +91 -0
  147. package/lib/common/service/backendSessionService.ts +388 -0
  148. package/lib/common/service/channelService.ts +609 -0
  149. package/lib/common/service/connectionService.ts +112 -0
  150. package/lib/common/service/filterService.ts +118 -0
  151. package/lib/common/service/handlerService.ts +224 -0
  152. package/lib/common/service/sessionService.ts +731 -0
  153. package/lib/components/backendSession.ts +14 -0
  154. package/lib/components/channel.ts +11 -0
  155. package/lib/components/connection.ts +13 -0
  156. package/lib/components/connector.ts +533 -0
  157. package/lib/components/dictionary.ts +121 -0
  158. package/lib/components/master.ts +41 -0
  159. package/lib/components/monitor.ts +30 -0
  160. package/lib/components/protobuf.ts +208 -0
  161. package/lib/components/proxy.ts +282 -0
  162. package/lib/components/pushScheduler.ts +70 -0
  163. package/lib/components/remote.ts +166 -0
  164. package/lib/components/server.ts +71 -0
  165. package/lib/components/session.ts +22 -0
  166. package/lib/connectors/commands/handshake.ts +155 -0
  167. package/lib/connectors/commands/heartbeat.ts +83 -0
  168. package/lib/connectors/commands/kick.ts +11 -0
  169. package/lib/connectors/common/coder.ts +93 -0
  170. package/lib/connectors/common/handler.ts +62 -0
  171. package/lib/connectors/hybrid/IHybridSocket.ts +9 -0
  172. package/lib/connectors/hybrid/switcher.ts +142 -0
  173. package/lib/connectors/hybrid/tcpprocessor.ts +43 -0
  174. package/lib/connectors/hybrid/tcpsocket.ts +223 -0
  175. package/lib/connectors/hybrid/wsprocessor.ts +57 -0
  176. package/lib/connectors/hybridconnector.ts +134 -0
  177. package/lib/connectors/hybridsocket.ts +168 -0
  178. package/lib/connectors/mqtt/generate.ts +103 -0
  179. package/lib/connectors/mqtt/mqttadaptor.ts +114 -0
  180. package/lib/connectors/mqtt/protocol.ts +49 -0
  181. package/lib/connectors/mqttconnector.ts +134 -0
  182. package/lib/connectors/mqttsocket.ts +79 -0
  183. package/lib/connectors/sioconnector.ts +161 -0
  184. package/lib/connectors/siosocket.ts +85 -0
  185. package/lib/connectors/udpconnector.ts +113 -0
  186. package/lib/connectors/udpsocket.ts +110 -0
  187. package/lib/filters/handler/serial.ts +46 -0
  188. package/lib/filters/handler/time.ts +35 -0
  189. package/lib/filters/handler/timeout.ts +50 -0
  190. package/lib/filters/handler/toobusy.ts +37 -0
  191. package/lib/filters/rpc/rpcLog.ts +42 -0
  192. package/lib/filters/rpc/toobusy.ts +41 -0
  193. package/lib/index.ts +74 -0
  194. package/lib/interfaces/IComponent.ts +47 -0
  195. package/lib/interfaces/IConnector.ts +20 -0
  196. package/lib/interfaces/IHandlerFilter.ts +15 -0
  197. package/lib/interfaces/ILifeCycle.ts +16 -0
  198. package/lib/interfaces/IPlugin.ts +65 -0
  199. package/lib/interfaces/IPushScheduler.ts +52 -0
  200. package/lib/interfaces/ISocket.ts +26 -0
  201. package/lib/interfaces/IStore.ts +10 -0
  202. package/lib/interfaces/define.ts +15 -0
  203. package/lib/master/master.ts +148 -0
  204. package/lib/master/starter.ts +234 -0
  205. package/lib/master/watchdog.ts +135 -0
  206. package/lib/melo.ts +152 -0
  207. package/lib/modules/console.ts +465 -0
  208. package/lib/modules/masterwatcher.ts +120 -0
  209. package/lib/modules/monitorwatcher.ts +151 -0
  210. package/lib/modules/onlineUser.ts +78 -0
  211. package/lib/modules/restartNotifyModule.ts +128 -0
  212. package/lib/modules/watchServer.ts +766 -0
  213. package/lib/monitor/monitor.ts +99 -0
  214. package/lib/pushSchedulers/buffer.ts +117 -0
  215. package/lib/pushSchedulers/direct.ts +65 -0
  216. package/lib/pushSchedulers/multi.ts +94 -0
  217. package/lib/server/server.ts +554 -0
  218. package/lib/util/appUtil.ts +313 -0
  219. package/lib/util/constants.ts +154 -0
  220. package/lib/util/countDownLatch.ts +72 -0
  221. package/lib/util/events.ts +15 -0
  222. package/lib/util/handlerHelper.ts +5 -0
  223. package/lib/util/log.ts +11 -0
  224. package/lib/util/moduleUtil.ts +110 -0
  225. package/lib/util/pathUtil.ts +132 -0
  226. package/lib/util/remoterHelper.ts +68 -0
  227. package/lib/util/utils.ts +365 -0
  228. package/package.json +93 -0
  229. package/template/game-server/.vscode/launch.json +27 -0
  230. package/template/game-server/app/servers/connector/handler/entryHandler.ts +50 -0
  231. package/template/game-server/app/servers/connector/remote/authRemoter.ts +36 -0
  232. package/template/game-server/app.ts +30 -0
  233. package/template/game-server/app.ts.mqtt +32 -0
  234. package/template/game-server/app.ts.sio +36 -0
  235. package/template/game-server/app.ts.sio.wss +34 -0
  236. package/template/game-server/app.ts.udp +31 -0
  237. package/template/game-server/app.ts.wss +40 -0
  238. package/template/game-server/config/adminServer.json +5 -0
  239. package/template/game-server/config/adminUser.json +22 -0
  240. package/template/game-server/config/clientProtos.json +1 -0
  241. package/template/game-server/config/dictionary.json +1 -0
  242. package/template/game-server/config/log4js.json +150 -0
  243. package/template/game-server/config/master.json +8 -0
  244. package/template/game-server/config/serverProtos.json +1 -0
  245. package/template/game-server/config/servers.json +12 -0
  246. package/template/game-server/copy.js +5 -0
  247. package/template/game-server/package.json +28 -0
  248. package/template/game-server/preload.ts +40 -0
  249. package/template/game-server/tsconfig.json +36 -0
  250. package/template/npm-install.bat +4 -0
  251. package/template/npm-install.sh +5 -0
  252. package/template/readme.md +31 -0
  253. package/template/shared/server.crt +15 -0
  254. package/template/shared/server.key +15 -0
  255. package/template/web-server/app.js +25 -0
  256. package/template/web-server/app.js.https +36 -0
  257. package/template/web-server/bin/component.bat +1 -0
  258. package/template/web-server/bin/component.sh +1 -0
  259. package/template/web-server/package.json +10 -0
  260. package/template/web-server/public/css/base.css +76 -0
  261. package/template/web-server/public/image/logo.png +0 -0
  262. package/template/web-server/public/image/sp.png +0 -0
  263. package/template/web-server/public/index.html +57 -0
  264. package/template/web-server/public/index.html.sio +58 -0
  265. package/template/web-server/public/js/lib/build/build.js +1730 -0
  266. package/template/web-server/public/js/lib/build/build.js.wss +1721 -0
  267. package/template/web-server/public/js/lib/component.json +6 -0
  268. package/template/web-server/public/js/lib/local/boot/component.json +11 -0
  269. package/template/web-server/public/js/lib/local/boot/index.js +11 -0
  270. package/template/web-server/public/js/lib/meloclient.js +456 -0
  271. package/template/web-server/public/js/lib/meloclient.js.wss +456 -0
  272. package/template/web-server/public/js/lib/socket.io.js +3 -0
  273. package/test/application.ts +607 -0
  274. package/test/filters/handler/serial.ts +47 -0
  275. package/test/filters/handler/time.ts +47 -0
  276. package/test/filters/handler/timeout.ts +46 -0
  277. package/test/filters/handler/toobusy.ts +59 -0
  278. package/test/filters/rpc/rpcLog.ts +20 -0
  279. package/test/filters/rpc/toobusy.ts +40 -0
  280. package/test/manager/mockChannelManager.ts +92 -0
  281. package/test/manager/taskManager.ts +78 -0
  282. package/test/mock-base/app/servers/other-file +0 -0
  283. package/test/mock-plugin/components/mockPlugin.ts +8 -0
  284. package/test/mock-plugin/events/mockEvent.ts +12 -0
  285. package/test/modules/console.ts +264 -0
  286. package/test/pomelo.ts +18 -0
  287. package/test/remote/channelRemote.ts +176 -0
  288. package/test/service/channel.ts +161 -0
  289. package/test/service/channelService.ts +243 -0
  290. package/test/service/connectionService.ts +142 -0
  291. package/test/service/filterService.ts +165 -0
  292. package/test/service/handlerService.ts +77 -0
  293. package/test/service/sessionService.ts +464 -0
  294. package/test/util/countDownLatch.ts +81 -0
  295. package/test/util/pathUtil.ts +122 -0
  296. 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,5 @@
1
+ [{
2
+ "type": "connector",
3
+ "token": "agarxhqb98rpajloaxn34ga8xrunpagkjwlaw3ruxnpaagl29w4rxn"
4
+ }
5
+ ]
@@ -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,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,8 @@
1
+ {
2
+ "development": {
3
+ "id": "master-server-1", "host": "127.0.0.1", "port": 3005
4
+ },
5
+ "production": {
6
+ "id": "master-server-1", "host": "127.0.0.1", "port": 3005
7
+ }
8
+ }
@@ -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,5 @@
1
+ const cpy = require('cpy')
2
+ // 复制配置文件到打包好的目录中
3
+ cpy(['./config/**'], './dist/config').then(() => {
4
+ console.log('build. config files copied')
5
+ })
@@ -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,4 @@
1
+ ::npm-install.bat
2
+ @echo off
3
+ ::install web server dependencies && game server dependencies
4
+ cd web-server && npm install -d && cd .. && cd game-server && npm install -d
@@ -0,0 +1,5 @@
1
+ cd ./game-server && npm install -d
2
+ echo '============ game-server npm installed ============'
3
+ cd ..
4
+ cd ./web-server && npm install -d
5
+ echo '============ web-server npm installed ============'
@@ -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-----