mm_os 3.3.0 → 4.0.0

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 (380) hide show
  1. package/LICENSE +21 -201
  2. package/README.md +491 -99
  3. package/README_EN.md +498 -0
  4. package/adapter/adapter.js +431 -0
  5. package/adapter/custom_persistence.js +660 -0
  6. package/adapter/mqtt.js +273 -0
  7. package/adapter/socket.js +113 -0
  8. package/adapter/web.js +67 -0
  9. package/adapter/websocket.js +146 -0
  10. package/com/api/com.json +5 -0
  11. package/{core/com → com}/api/config.tpl.json +8 -8
  12. package/com/api/drive.js +708 -0
  13. package/com/api/index.js +198 -0
  14. package/com/api/oauth.js +200 -0
  15. package/com/api/script.tpl.js +32 -0
  16. package/com/cmd/README.md +11 -0
  17. package/com/cmd/com.json +5 -0
  18. package/com/cmd/config.tpl.json +122 -0
  19. package/com/cmd/drive.js +1548 -0
  20. package/com/cmd/index.js +1066 -0
  21. package/com/cmd/msg.json +48 -0
  22. package/com/cmd/nlp.js +525 -0
  23. package/com/cmd/script.tpl.js +32 -0
  24. package/com/db/com.json +5 -0
  25. package/com/db/drive.js +1999 -0
  26. package/com/db/index.js +242 -0
  27. package/com/event/com.json +5 -0
  28. package/{core/com → com}/event/config.tpl.json +8 -8
  29. package/com/event/drive.js +59 -0
  30. package/com/event/index.js +409 -0
  31. package/com/event/script.tpl.js +23 -0
  32. package/com/mqtt/com.json +5 -0
  33. package/{core/com → com}/mqtt/config.tpl.json +3 -5
  34. package/com/mqtt/drive.js +676 -0
  35. package/com/mqtt/index.js +822 -0
  36. package/com/mqtt/mm_mqtt.js +425 -0
  37. package/com/mqtt/script.tpl.js +723 -0
  38. package/com/nav/com.json +5 -0
  39. package/com/nav/config.tpl.json +84 -0
  40. package/com/nav/drive.js +702 -0
  41. package/com/nav/index.js +231 -0
  42. package/{core/com → com}/nav/tpl/admin_pc/page_config.vue +280 -280
  43. package/{core/com → com}/nav/tpl/admin_pc/page_config_form.vue +194 -194
  44. package/com/nav/tpl/admin_pc/page_form.vue +180 -0
  45. package/com/nav/tpl/admin_pc/page_view.vue +124 -0
  46. package/com/nav/tpl/dev_pc/page_default.vue +247 -0
  47. package/com/nav/tpl/dev_pc/page_type.vue +313 -0
  48. package/com/nav/tpl/home_pc/page_default.vue +234 -0
  49. package/com/nav/tpl/home_pc/page_form.vue +137 -0
  50. package/com/nav/tpl/home_pc/page_list.vue +234 -0
  51. package/com/nav/tpl/home_pc/page_nav.vue +221 -0
  52. package/com/nav/tpl/home_pc/page_type.vue +234 -0
  53. package/com/nav/tpl/home_pc/page_view.vue +125 -0
  54. package/com/nav/tpl/home_phone/page_channel.vue +234 -0
  55. package/com/nav/tpl/home_phone/page_default.vue +234 -0
  56. package/com/nav/tpl/home_phone/page_form.vue +137 -0
  57. package/com/nav/tpl/home_phone/page_nav.vue +237 -0
  58. package/com/nav/tpl/home_phone/page_type.vue +234 -0
  59. package/com/nav/tpl/home_phone/page_view.vue +125 -0
  60. package/com/nav/viewmodel.js +446 -0
  61. package/com/param/com.json +5 -0
  62. package/{core/com → com}/param/config.tpl.json +7 -1
  63. package/com/param/drive.js +502 -0
  64. package/com/param/index.js +155 -0
  65. package/com/param/script.tpl.js +12 -0
  66. package/com/pendant/com.json +5 -0
  67. package/{core/com/component → com/pendant}/config.tpl.json +15 -13
  68. package/com/pendant/drive.js +204 -0
  69. package/com/pendant/index.js +441 -0
  70. package/com/pendant/pendant.html +16 -0
  71. package/com/pendant/script.tpl.js +18 -0
  72. package/com/socket/com.json +5 -0
  73. package/com/socket/config.tpl.json +12 -0
  74. package/com/socket/drive.js +651 -0
  75. package/com/socket/index.js +351 -0
  76. package/com/socket/script.tpl.js +41 -0
  77. package/com/sql/com.json +5 -0
  78. package/{core/com → com}/sql/config.tpl.json +13 -9
  79. package/com/sql/drive.js +1259 -0
  80. package/com/sql/index.js +150 -0
  81. package/com/sql/script.tpl.js +47 -0
  82. package/com/static/com.json +5 -0
  83. package/{core/com → com}/static/config.tpl.json +10 -6
  84. package/com/static/drive.js +194 -0
  85. package/com/static/index.js +226 -0
  86. package/com/static/script.tpl.js +28 -0
  87. package/com/task/com.json +5 -0
  88. package/{core/com → com}/task/config.tpl.json +4 -6
  89. package/com/task/drive.js +405 -0
  90. package/com/task/index.js +148 -0
  91. package/com/task/script.tpl.js +37 -0
  92. package/com/template/com.json +5 -0
  93. package/com/template/config.tpl.json +16 -0
  94. package/com/template/drive.js +80 -0
  95. package/com/template/index.js +141 -0
  96. package/com.js +156 -0
  97. package/common/README.md +2 -0
  98. package/common/handler/msg/handler.json +22 -0
  99. package/common/handler/msg/index.js +23 -0
  100. package/common/handler/player/handler.json +22 -0
  101. package/common/handler/player/index.js +287 -0
  102. package/common/handler/user/handler.json +22 -0
  103. package/common/handler/user/index.js +23 -0
  104. package/common/middleware/web_after/index.js +29 -0
  105. package/common/middleware/web_after/middleware.json +9 -0
  106. package/common/middleware/web_base/index.js +113 -0
  107. package/common/middleware/web_base/middleware.json +19 -0
  108. package/common/middleware/web_before/index.js +33 -0
  109. package/common/middleware/web_before/middleware.json +9 -0
  110. package/common/middleware/web_cors/index.js +87 -0
  111. package/common/middleware/web_cors/middleware.json +24 -0
  112. package/common/middleware/web_error/index.js +119 -0
  113. package/common/middleware/web_error/middleware.json +18 -0
  114. package/common/middleware/web_ip/index.js +15 -0
  115. package/common/middleware/web_ip/middleware.json +14 -0
  116. package/common/middleware/web_logger/index.js +156 -0
  117. package/common/middleware/web_logger/middleware.json +14 -0
  118. package/common/middleware/web_main/index.js +24 -0
  119. package/common/middleware/web_main/middleware.json +9 -0
  120. package/common/middleware/web_static/index.js +73 -0
  121. package/common/middleware/web_static/middleware.json +54 -0
  122. package/common/middleware/web_waf/index.js +385 -0
  123. package/common/middleware/web_waf/middleware.json +13 -0
  124. package/common/model/msg/index.js +88 -0
  125. package/common/model/msg/model.json +401 -0
  126. package/common/model/player/index.js +63 -0
  127. package/common/model/player/model.json +185 -0
  128. package/common/model/user/index.js +11 -0
  129. package/common/model/user/model.json +219 -0
  130. package/core/app/config.tpl.json +67 -0
  131. package/core/app/index.js +632 -0
  132. package/core/app/script.tpl.js +52 -0
  133. package/core/channel/index.js +899 -0
  134. package/core/channel/matcher.js +585 -0
  135. package/core/com/config.tpl.json +16 -0
  136. package/core/com/index.js +74 -0
  137. package/core/com/script.tpl.js +5 -0
  138. package/core/component/component.js +42 -0
  139. package/core/component/config.tpl.json +63 -0
  140. package/core/component/index.js +273 -0
  141. package/core/component/script.tpl.js +19 -0
  142. package/core/controller/config.tpl.json +14 -0
  143. package/core/controller/index.js +373 -0
  144. package/core/controller/script.tpl.js +27 -0
  145. package/core/factory/config.tpl.json +14 -0
  146. package/core/factory/entity.js +275 -0
  147. package/core/factory/index.js +241 -0
  148. package/core/factory/script.tpl.js +16 -0
  149. package/core/game/bat/index.js +137 -0
  150. package/core/game/bat/world.js +622 -0
  151. package/core/game/config.tpl.json +16 -0
  152. package/core/game/entity_admin.js +230 -0
  153. package/core/game/index.js +186 -0
  154. package/core/handler/config.tpl.json +22 -0
  155. package/core/handler/index.js +181 -0
  156. package/core/handler/script.tpl.js +23 -0
  157. package/core/logic/config.tpl.json +14 -0
  158. package/core/logic/index.js +59 -0
  159. package/core/logic/script.tpl.js +19 -0
  160. package/core/middleware/config.tpl.json +16 -0
  161. package/core/middleware/index.js +125 -0
  162. package/core/middleware/script.tpl.js +37 -0
  163. package/core/mod/config.tpl.json +22 -0
  164. package/core/mod/index.js +130 -0
  165. package/core/mod/script.tpl.js +34 -0
  166. package/core/model/config.tpl.json +219 -0
  167. package/core/model/index.js +272 -0
  168. package/core/model/model.js +27 -0
  169. package/core/model/script.tpl.js +20 -0
  170. package/core/notifier/config.tpl.json +14 -0
  171. package/core/notifier/index.js +77 -0
  172. package/core/notifier/script.tpl.js +20 -0
  173. package/core/plugin/config.tpl.json +24 -0
  174. package/core/plugin/index.js +232 -0
  175. package/core/plugin/script.tpl.js +51 -0
  176. package/core/pusher/config.tpl.json +14 -0
  177. package/core/pusher/index.js +161 -0
  178. package/core/pusher/script.tpl.js +20 -0
  179. package/core/room/bat/index.js +170 -0
  180. package/core/room/bat/room.js +524 -0
  181. package/core/room/config.tpl.json +20 -0
  182. package/core/room/index.js +249 -0
  183. package/core/room/room.js +61 -0
  184. package/core/scene/config.tpl.json +14 -0
  185. package/core/scene/index.js +466 -0
  186. package/core/scene/loop.js +1255 -0
  187. package/core/scene/map.js +28 -0
  188. package/core/scene/script.tpl.js +22 -0
  189. package/core/sender/config.tpl.json +14 -0
  190. package/core/sender/index.js +79 -0
  191. package/core/sender/script.tpl.js +20 -0
  192. package/core/service/config.tpl.json +14 -0
  193. package/core/service/index.js +100 -0
  194. package/core/service/script.tpl.js +25 -0
  195. package/core/store/config.tpl.json +26 -0
  196. package/core/store/index.js +1755 -0
  197. package/core/store/script.tpl.js +22 -0
  198. package/core/store/sql.js +1464 -0
  199. package/core/system/config.tpl.json +18 -0
  200. package/core/system/index.js +312 -0
  201. package/core/system/script.tpl.js +77 -0
  202. package/core/view/config.tpl.json +14 -0
  203. package/core/view/index.js +91 -0
  204. package/core/view/script.tpl.js +20 -0
  205. package/core/zone/bat/index.js +725 -0
  206. package/core/zone/config.tpl.json +54 -0
  207. package/core/zone/index.js +614 -0
  208. package/core/zone/script.tpl.js +10 -0
  209. package/core/zone/zone_bat.js +136 -0
  210. package/core//345/237/272/347/261/273/346/250/241/345/235/227/346/270/205/345/215/225.md +24 -0
  211. package/index.js +17 -314
  212. package/os.js +57 -0
  213. package/package.json +60 -58
  214. package/server.js +598 -0
  215. package/README.en.md +0 -36
  216. package/conf.json +0 -3
  217. package/core/base/mqtt/index.js +0 -1107
  218. package/core/base/mqtt/lib.js +0 -40
  219. package/core/base/web/index.js +0 -243
  220. package/core/com/api/com.json +0 -4
  221. package/core/com/api/drive.js +0 -668
  222. package/core/com/api/index.js +0 -108
  223. package/core/com/api/oauth.js +0 -158
  224. package/core/com/api/script.js +0 -32
  225. package/core/com/app/README.md +0 -3
  226. package/core/com/app/com.json +0 -4
  227. package/core/com/app/config.tpl.json +0 -16
  228. package/core/com/app/drive.js +0 -309
  229. package/core/com/app/index.js +0 -211
  230. package/core/com/app/script.js +0 -155
  231. package/core/com/cmd/com.json +0 -4
  232. package/core/com/cmd/config.tpl.json +0 -66
  233. package/core/com/cmd/drive.js +0 -513
  234. package/core/com/cmd/index.js +0 -354
  235. package/core/com/cmd/old/5w2h.js +0 -54
  236. package/core/com/cmd/old/drive.js +0 -423
  237. package/core/com/cmd/script.js +0 -11
  238. package/core/com/component/README.md +0 -3
  239. package/core/com/component/com.json +0 -4
  240. package/core/com/component/component.html +0 -16
  241. package/core/com/component/drive.js +0 -197
  242. package/core/com/component/index.js +0 -312
  243. package/core/com/component/script.js +0 -18
  244. package/core/com/db/com.json +0 -4
  245. package/core/com/db/drive.js +0 -1160
  246. package/core/com/db/index.js +0 -176
  247. package/core/com/event/com.json +0 -4
  248. package/core/com/event/drive.js +0 -133
  249. package/core/com/event/index.js +0 -345
  250. package/core/com/event/script.js +0 -26
  251. package/core/com/eventer/com.js +0 -477
  252. package/core/com/eventer/com.json +0 -4
  253. package/core/com/middleware/com.js +0 -153
  254. package/core/com/middleware/com.json +0 -4
  255. package/core/com/middleware/config.tpl.json +0 -8
  256. package/core/com/middleware/script.js +0 -9
  257. package/core/com/mqtt/com.json +0 -4
  258. package/core/com/mqtt/drive.js +0 -600
  259. package/core/com/mqtt/index.js +0 -572
  260. package/core/com/mqtt/mm_mqtt.js +0 -330
  261. package/core/com/mqtt/script.js +0 -604
  262. package/core/com/msg/com.js +0 -296
  263. package/core/com/msg/com.json +0 -4
  264. package/core/com/nav/com.json +0 -4
  265. package/core/com/nav/config.tpl.json +0 -75
  266. package/core/com/nav/drive.js +0 -549
  267. package/core/com/nav/index.js +0 -182
  268. package/core/com/nav/tpl/admin_pc/page_form.vue +0 -180
  269. package/core/com/nav/tpl/admin_pc/page_view.vue +0 -124
  270. package/core/com/nav/tpl/dev_pc/page_default.vue +0 -247
  271. package/core/com/nav/tpl/dev_pc/page_type.vue +0 -313
  272. package/core/com/nav/tpl/home_pc/page_default.vue +0 -234
  273. package/core/com/nav/tpl/home_pc/page_form.vue +0 -137
  274. package/core/com/nav/tpl/home_pc/page_list.vue +0 -234
  275. package/core/com/nav/tpl/home_pc/page_nav.vue +0 -221
  276. package/core/com/nav/tpl/home_pc/page_type.vue +0 -234
  277. package/core/com/nav/tpl/home_pc/page_view.vue +0 -125
  278. package/core/com/nav/tpl/home_phone/page_channel.vue +0 -234
  279. package/core/com/nav/tpl/home_phone/page_default.vue +0 -234
  280. package/core/com/nav/tpl/home_phone/page_form.vue +0 -137
  281. package/core/com/nav/tpl/home_phone/page_nav.vue +0 -237
  282. package/core/com/nav/tpl/home_phone/page_type.vue +0 -234
  283. package/core/com/nav/tpl/home_phone/page_view.vue +0 -125
  284. package/core/com/nav/viewmodel.js +0 -296
  285. package/core/com/param/drive.js +0 -366
  286. package/core/com/param/index.js +0 -80
  287. package/core/com/param/script.js +0 -12
  288. package/core/com/param/test.js +0 -98
  289. package/core/com/plugin/README.md +0 -3
  290. package/core/com/plugin/com.json +0 -4
  291. package/core/com/plugin/config.tpl.json +0 -26
  292. package/core/com/plugin/drive.js +0 -536
  293. package/core/com/plugin/index.js +0 -259
  294. package/core/com/plugin/script.js +0 -213
  295. package/core/com/rpc/com.json +0 -4
  296. package/core/com/rpc/drive.js +0 -160
  297. package/core/com/rpc/index.js +0 -87
  298. package/core/com/rpc/rpc.js +0 -118
  299. package/core/com/socket/com.json +0 -4
  300. package/core/com/socket/config.tpl.json +0 -14
  301. package/core/com/socket/drive.js +0 -403
  302. package/core/com/socket/index.js +0 -62
  303. package/core/com/socket/script.js +0 -42
  304. package/core/com/sql/drive.js +0 -1087
  305. package/core/com/sql/index.js +0 -83
  306. package/core/com/sql/script.js +0 -48
  307. package/core/com/static/com.json +0 -4
  308. package/core/com/static/drive.js +0 -220
  309. package/core/com/static/index.js +0 -149
  310. package/core/com/static/script.js +0 -28
  311. package/core/com/task/com.json +0 -4
  312. package/core/com/task/drive.js +0 -403
  313. package/core/com/task/index.js +0 -110
  314. package/core/com/task/script.js +0 -37
  315. package/core/com/timer/com.js +0 -217
  316. package/core/com/timer/com.json +0 -4
  317. package/core/com/tpl/com.js +0 -19
  318. package/core/com/tpl/com.json +0 -4
  319. package/lib/actions.js +0 -50
  320. package/lib/base.js +0 -361
  321. package/lib/com.js +0 -29
  322. package/lib/ref.js +0 -121
  323. package/middleware/mqtt_base/index.js +0 -10
  324. package/middleware/mqtt_base/middleware.json +0 -10
  325. package/middleware/performance/index.js +0 -151
  326. package/middleware/performance/middleware.json +0 -16
  327. package/middleware/security_audit/index.js +0 -549
  328. package/middleware/security_audit/middleware.json +0 -48
  329. package/middleware/security_headers/index.js +0 -487
  330. package/middleware/security_headers/middleware.json +0 -45
  331. package/middleware/waf/index.js +0 -348
  332. package/middleware/waf/middleware.json +0 -10
  333. package/middleware/waf_ddos/index.js +0 -520
  334. package/middleware/waf_ddos/middleware.json +0 -38
  335. package/middleware/waf_ip/index.js +0 -379
  336. package/middleware/waf_ip/middleware.json +0 -49
  337. package/middleware/waf_xss/index.js +0 -269
  338. package/middleware/waf_xss/middleware.json +0 -18
  339. package/middleware/web_after/index.js +0 -33
  340. package/middleware/web_after/middleware.json +0 -9
  341. package/middleware/web_base/index.js +0 -90
  342. package/middleware/web_base/middleware.json +0 -9
  343. package/middleware/web_before/index.js +0 -27
  344. package/middleware/web_before/middleware.json +0 -9
  345. package/middleware/web_check/index.js +0 -28
  346. package/middleware/web_check/middleware.json +0 -9
  347. package/middleware/web_main/index.js +0 -28
  348. package/middleware/web_main/middleware.json +0 -9
  349. package/middleware/web_proxy/index.js +0 -37
  350. package/middleware/web_proxy/middleware.json +0 -9
  351. package/middleware/web_render/index.js +0 -87
  352. package/middleware/web_render/middleware.json +0 -9
  353. package/middleware/web_socket/index.js +0 -34
  354. package/middleware/web_socket/middleware.json +0 -9
  355. package/middleware/web_static/index.js +0 -115
  356. package/middleware/web_static/middleware.json +0 -9
  357. /package/{core/com → com}/api/README.md +0 -0
  358. /package/{core/com → com}/db/README.md +0 -0
  359. /package/{core/com → com}/event/README.md +0 -0
  360. /package/{core/com → com}/mqtt/README.md +0 -0
  361. /package/{core/com → com}/nav/README.md +0 -0
  362. /package/{core/com → com}/nav/tpl/admin_pc/page_channel.vue +0 -0
  363. /package/{core/com → com}/nav/tpl/admin_pc/page_default.vue +0 -0
  364. /package/{core/com → com}/nav/tpl/admin_pc/page_lang.vue +0 -0
  365. /package/{core/com → com}/nav/tpl/admin_pc/page_nav.vue +0 -0
  366. /package/{core/com → com}/nav/tpl/admin_pc/page_table.vue +0 -0
  367. /package/{core/com → com}/nav/tpl/admin_pc/page_type.vue +0 -0
  368. /package/{core/com → com}/nav/tpl/dev_pc/page_channel.vue +0 -0
  369. /package/{core/com → com}/nav/tpl/dev_pc/page_config.vue +0 -0
  370. /package/{core/com → com}/nav/tpl/dev_pc/page_form.vue +0 -0
  371. /package/{core/com → com}/nav/tpl/dev_pc/page_nav.vue +0 -0
  372. /package/{core/com → com}/nav/tpl/dev_pc/page_table.vue +0 -0
  373. /package/{core/com → com}/nav/tpl/home_pc/page_channel.vue +0 -0
  374. /package/{core/com → com}/nav/tpl/home_phone/page_list.vue +0 -0
  375. /package/{core/com → com}/param/README.md +0 -0
  376. /package/{core/com/cmd → com/pendant}/README.md +0 -0
  377. /package/{core/com → com}/socket/README.md +0 -0
  378. /package/{core/com → com}/sql/README.md +0 -0
  379. /package/{core/com → com}/static/README.md +0 -0
  380. /package/{core/com → com}/task/README.md +0 -0
package/server.js ADDED
@@ -0,0 +1,598 @@
1
+ require('mm_expand');
2
+ const {
3
+ Log
4
+ } = require('mm_logs');
5
+ const {
6
+ cacheAdmin
7
+ } = require('mm_cache');
8
+ const {
9
+ sqlAdmin
10
+ } = require('mm_sql');
11
+ const {
12
+ Config
13
+ } = require('mm_config');
14
+ const {
15
+ Manager,
16
+ Drive
17
+ } = require('mm_machine');
18
+
19
+ const {
20
+ App
21
+ } = require('./core/app/index.js');
22
+ const {
23
+ Game
24
+ } = require('./core/game/index.js');
25
+ // const {
26
+ // Zone
27
+ // } = require('./core/zone/index.js');
28
+ const {
29
+ Mod
30
+ } = require('./core/mod/index.js');
31
+ const {
32
+ Middleware
33
+ } = require('./core/middleware/index.js');
34
+ const {
35
+ Notifier
36
+ } = require('./core/notifier/index.js');
37
+ const {
38
+ Pusher
39
+ } = require('./core/pusher/index.js');
40
+ const {
41
+ Sender
42
+ } = require('./core/sender/index.js');
43
+ const {
44
+ Web
45
+ } = require('./adapter/web.js');
46
+ const {
47
+ Mqtt
48
+ } = require('./adapter/mqtt.js');
49
+ const {
50
+ Socket
51
+ } = require('./adapter/socket.js');
52
+ const {
53
+ WebSocket
54
+ } = require('./adapter/websocket.js');
55
+ const {
56
+ Com
57
+ } = require('./com.js');
58
+
59
+ /**
60
+ * 服务器类
61
+ * 负责管理整个应用的服务端架构
62
+ */
63
+ class Server extends Drive {
64
+ static config = {
65
+ name: 'mos',
66
+ title: 'mm服务端系统',
67
+ log: {
68
+ level: 'debug',
69
+ file: false
70
+ },
71
+ mqtt: {
72
+ host: '127.0.0.1',
73
+ port: 1883,
74
+ state: 0
75
+ },
76
+ socket: {
77
+ host: '0.0.0.0',
78
+ port: 8200,
79
+ state: 0
80
+ },
81
+ sql: {
82
+ // mysql、sqlite
83
+ way: 'mysql'
84
+ },
85
+ sqlite: {
86
+ dir: './db/'.fullname(),
87
+ user: 'root',
88
+ password: '',
89
+ database: 'mm',
90
+ charset: 'utf8mb4',
91
+ connect_timeout: 20000,
92
+ connection_limit: 500
93
+ },
94
+ mysql: {
95
+ host: '127.0.0.1',
96
+ port: 3306,
97
+ user: 'root',
98
+ password: 'Asd159357',
99
+ database: '',
100
+ charset: 'utf8mb4',
101
+ timezone: '+08:00',
102
+ connect_timeout: 20000,
103
+ connection_limit: 500
104
+ },
105
+ cache: {
106
+ // 缓存方式memory、redis、mongodb
107
+ way: 'redis'
108
+ },
109
+ // 缓存基础配置
110
+ cachebase: {
111
+ dir: './cache/'.fullname(),
112
+ expire: 0,
113
+ max: 0,
114
+ persist: false, // 是否启用持久化
115
+ saveInterval: 60000 // 保存间隔(毫秒)
116
+ },
117
+ // 缓存配置
118
+ redis: {
119
+ // 服务器地址
120
+ host: 'localhost',
121
+ // 端口号
122
+ port: 6379,
123
+ // 密码
124
+ password: 'asd159357',
125
+ // 数据库
126
+ database: 0,
127
+ // 前缀
128
+ prefix: "mm_",
129
+ // 连接超时时间(ms)
130
+ connect_timeout: 10000,
131
+ // 重试次数
132
+ retry_count: 3,
133
+ // 重试间隔(ms)
134
+ retry_delay: 1000
135
+ },
136
+ // 数据库配置
137
+ mongodb: {
138
+ // 服务器地址
139
+ host: 'localhost',
140
+ // 端口号
141
+ port: 27017,
142
+ // 数据库名
143
+ database: "mm",
144
+ // 用户名
145
+ user: '',
146
+ // 密码
147
+ password: '',
148
+ // 连接选项 (MongoDB驱动7.x版本支持的参数)
149
+ min_pool_size: 10,
150
+ max_pool_size: 100,
151
+ connect_timeout_ms: 10000,
152
+ server_selection_timeout_ms: 5000,
153
+ retry_writes: true
154
+ },
155
+ web: {
156
+ state: 1,
157
+ // 访问地址
158
+ host: '127.0.0.1',
159
+ // 访问端口号
160
+ port: 8000,
161
+ // 是否启用websocket
162
+ socket: false,
163
+ // 是否启用压缩
164
+ compress: false,
165
+ // 是否启用事件
166
+ event: true,
167
+ // 是否启用事件
168
+ log: true,
169
+ // 跨域
170
+ cos: {
171
+ status: true,
172
+ origin: '*',
173
+ // "headers": "Content-Type,Content-Length,Authorization,Accept,X-Requested-With,x-auth-token,token,client_id,appid,apikey,user_id,x-forwarded-for,x-real-ip,User-Agent,cache-control,pragma,accept-encoding,connection,host"
174
+ },
175
+ // 代理转发
176
+ proxy: {},
177
+ // static 配置
178
+ static: {
179
+ // 是否开启静态文件处理
180
+ state: 1,
181
+ // 前端缓存时间,单位秒
182
+ max_age: 7200,
183
+ // 是否开启缓存
184
+ cache: true,
185
+ // 后端缓存时间,单位秒
186
+ cache_age: 0,
187
+ // 是否开启immutable缓存
188
+ immutable: true,
189
+ // 是否开启隐藏文件处理
190
+ hidden: false,
191
+ // 是否格式化文件
192
+ format: true,
193
+ // 是否指定文件扩展名
194
+ extensions: false,
195
+ // 是否开启brotli压缩
196
+ brotli: false,
197
+ // 是否开启gzip压缩
198
+ gzip: false,
199
+ // 静态文件根目录
200
+ root: "./static",
201
+ // 编译vue文件,启动后会将vue转为js,可让前端通过 import xxx from './xxx.vue' 引入
202
+ compile_vue: true,
203
+ // 编译markdown文件,启动后会将markdown转为html
204
+ compile_md: true,
205
+ // 是否将files中的文件的js转换为amd格式
206
+ convert_amd: false,
207
+ // 指定路径文件需要转换
208
+ src_path: '/src',
209
+ // 需要转换的文件扩展名
210
+ files: [
211
+ '.js',
212
+ '.vue',
213
+ '.html'
214
+ ],
215
+ // 是否启用文件修改监听(实时检测文件修改)
216
+ watch: true
217
+ }
218
+ }
219
+ };
220
+
221
+ /**
222
+ * 构造函数
223
+ * @param {object} config 配置参数
224
+ */
225
+ constructor(config) {
226
+ super({ ...Server.config, ...config });
227
+ /** == 管理层 == */
228
+ // 管理器
229
+ this.manager = {};
230
+ // 通知器
231
+ this.notifier = {};
232
+ // 消息发送器
233
+ this.sender = {};
234
+ // 广播器
235
+ this.pusher = {};
236
+
237
+ /** == 应用层 == */
238
+ // 中间件
239
+ this.middleware = {};
240
+ // 应用
241
+ this.app = {};
242
+ // 模组,用于功能/玩法扩展
243
+ this.mod = {};
244
+ // 游戏
245
+ this.game = {};
246
+ // 事件总线
247
+ this.eventer = $.eventer;
248
+ }
249
+ }
250
+
251
+ /**
252
+ * 预置
253
+ */
254
+ Server.prototype._preset = function () {
255
+ // 适配器
256
+ this.adapter = {};
257
+
258
+ /** == 基础设施 == */
259
+ // 日志
260
+ this.setLogger($.log || console);
261
+ // 数据库
262
+ this.sql = null;
263
+ // 缓存
264
+ this.cache = null;
265
+ // 文件管理
266
+ this.filer = null;
267
+ };
268
+
269
+ /**
270
+ * 深度合并对象
271
+ * @param {object} target 目标对象
272
+ * @param {object} source 源对象
273
+ * @returns {object} 合并后的对象
274
+ */
275
+ Server.prototype.deepMerge = function (target, source) {
276
+ for (let key of Object.keys(source)) {
277
+ if (source[key] instanceof Object && key in target) {
278
+ Object.assign(source[key], this.deepMerge(target[key], source[key]));
279
+ }
280
+ }
281
+ return {
282
+ ...target,
283
+ ...source
284
+ };
285
+ };
286
+
287
+ /**
288
+ * 设置配置
289
+ * @param {object} config 配置参数
290
+ */
291
+ Server.prototype.setConfig = function (config) {
292
+ if (config) {
293
+ this.config = this.deepMerge(this.config, config);
294
+ this._preset();
295
+ }
296
+ };
297
+
298
+ /**
299
+ * 初始化基础设施
300
+ */
301
+ Server.prototype._initModules = function () {
302
+ // 模板引擎
303
+ require('mm_tpl');
304
+ const Http = require('mm_https').Http;
305
+ $.Http = Http;
306
+ };
307
+
308
+ /**
309
+ * 初始化基础设施
310
+ */
311
+ Server.prototype._initBase = function () {
312
+ // 获取数据库配置
313
+ var sql = { type: 'mysql', ...this.config.sql };
314
+ if (this.config.mysql) {
315
+ sql.mysql = this.config.mysql;
316
+ }
317
+ if (this.config.sqlite) {
318
+ sql.sqlite = this.config.sqlite;
319
+ }
320
+ $.sqlAdmin = sqlAdmin;
321
+ this.sql = sqlAdmin('sys', sql);
322
+ $.sql = this.sql;
323
+
324
+ // 获取缓存配置
325
+ var cache = { type: 'memory', ...this.config.cache };
326
+ if (this.config.cachebase) {
327
+ cache.cachebase = this.config.cachebase;
328
+ }
329
+ if (this.config.redis) {
330
+ cache = { ...cache, ...this.config.redis };
331
+ }
332
+ if (this.config.mongodb) {
333
+ cache.mongodb = this.config.mongodb;
334
+ }
335
+ this.cache = cacheAdmin('sys', cache);
336
+ $.cache = this.cache;
337
+
338
+ this.filer = $.file;
339
+ };
340
+
341
+ /**
342
+ * 初始化工具
343
+ */
344
+ Server.prototype._initTool = function () {
345
+ this.logger = new Log(this.config.log);
346
+ $.log = this.logger;
347
+ $.config = new Config({
348
+ file: '/config.json'.fullname()
349
+ });
350
+ $.config.load();
351
+ $.config.setOptions(this.config);
352
+ $.config.saveAsync();
353
+ $.com = new Com();
354
+ $.com.loads();
355
+ };
356
+
357
+ /**
358
+ * 初始化适配器
359
+ */
360
+ Server.prototype._initAdapter = async function () {
361
+ // http服务器
362
+ var web = new Web(this.config.web);
363
+ web.init(this);
364
+ this.adapter.web = web;
365
+ if (this.config.web.socket) {
366
+ // websocket服务器 - 与web服务器共享同一个端口
367
+ this.adapter.ws = await new WebSocket(this.config.web).init(web);
368
+ }
369
+ if (this.config.mqtt && this.config.mqtt.state) {
370
+ // mqtt服务器
371
+ this.adapter.mqtt = await new Mqtt(this.config.mqtt).init(this.cache);
372
+ }
373
+ if (this.config.socket && this.config.socket.state) {
374
+ // socket服务器
375
+ this.adapter.socket = await new Socket(this.config.socket || {}).init();
376
+ }
377
+ };
378
+
379
+
380
+ /**
381
+ * 创建管理器实例
382
+ * @param {string} name 管理器名称
383
+ * @param {string} title 管理器标题
384
+ * @param {Function} cls 管理器类
385
+ * @returns {object} 管理器实例
386
+ */
387
+ Server.prototype._createManager = function (name, title, cls) {
388
+ var manager = new Manager(
389
+ {
390
+ name: name,
391
+ title: title,
392
+ filename: name + '.json',
393
+ tpl_dir: `./core/${name}/`.fullname(__dirname),
394
+ base_dir: `./common/${name}/`.fullname(__dirname),
395
+ dir: `./${name}`.fullname()
396
+ },
397
+ this,
398
+ this[name],
399
+ cls
400
+ );
401
+ // 设置到对应的管理器属性
402
+ this.manager[name] = manager;
403
+ return manager;
404
+ }
405
+
406
+ /**
407
+ * 初始化管理
408
+ */
409
+ Server.prototype._initManager = async function () {
410
+ // 管理器配置列表
411
+ var mgrConfigs = [
412
+ { name: 'game', title: '游戏', Module: Game },
413
+ // { name: 'zone', title: '分区', Module: Zone },
414
+ { name: 'app', title: '应用', Module: App },
415
+ { name: 'mod', title: '模组', Module: Mod },
416
+ { name: 'middleware', title: '中间件', Module: Middleware },
417
+ { name: 'notifier', title: '通知器', Module: Notifier },
418
+ { name: 'sender', title: '消息发送器', Module: Sender },
419
+ { name: 'pusher', title: '广播器', Module: Pusher }
420
+ ];
421
+
422
+ // 管理器实例集合
423
+ var managers = [];
424
+
425
+ // 使用for循环初始化所有管理器
426
+ for (var i = 0; i < mgrConfigs.length; i++) {
427
+ var config = mgrConfigs[i];
428
+ var manager = this._createManager(config.name, config.title, config.Module);
429
+ managers.push(manager);
430
+ }
431
+
432
+ // 并行执行所有管理器的初始化操作
433
+ var init_promises = [];
434
+ for (var j = 0; j < managers.length; j++) {
435
+ init_promises.push(managers[j].do('init'));
436
+ }
437
+
438
+ await Promise.all(init_promises);
439
+ };
440
+
441
+ /**
442
+ * 初始化模块
443
+ */
444
+ Server.prototype._initAsyncMod = async function () {
445
+ await Promise.all([
446
+ this.manager.notifier.runAll('init', this.adapter, this.eventer, this.logger),
447
+ this.manager.sender.runAll('init', this.adapter, this.eventer, this.logger),
448
+ this.manager.pusher.runAll('init', this.adapter, this.eventer, this.logger)
449
+ ]);
450
+ this.manager.middleware.runWait('init', this.adapter, this.eventer, this.logger);
451
+ };
452
+
453
+ /**
454
+ * 初始化资源
455
+ */
456
+ Server.prototype._initSources = async function () {
457
+ // 初始化顺序 game > app > mod > middleware > notifier > sender > pusher,根据依赖关系自下而上初始化,内部并行执行
458
+ await this.manager.game.runAll('init', this, this.eventer, this.logger);
459
+ await this.manager.app.runAll('init', this, this.eventer, this.logger);
460
+ await this.manager.mod.runAll('init', this, this.eventer, this.logger);
461
+ await this._initAsyncMod();
462
+ };
463
+
464
+ /**
465
+ * 初始化
466
+ * @private
467
+ */
468
+ Server.prototype._init = async function () {
469
+ try {
470
+ // 初始化工具
471
+ this._initTool();
472
+ // 初始化模块
473
+ this._initModules();
474
+ // 初始化基础设施
475
+ this._initBase();
476
+ // 初始化适配器
477
+ this._initAdapter();
478
+ // 初始化管理器
479
+ await this._initManager();
480
+ // 加载资源
481
+ await this._loadSources();
482
+ // 初始化资源
483
+ await this._initSources();
484
+ // 统一处理错误
485
+ this._initErrorRun();
486
+ } catch (error) {
487
+ this.log('error', '初始化过程失败:', error);
488
+ throw error;
489
+ }
490
+ };
491
+
492
+ /**
493
+ * 启动资源
494
+ */
495
+ Server.prototype._startSources = async function () {
496
+ // 启动无顺序,但需要等待所有启动完成,内部依次执行
497
+ await Promise.all([
498
+ this.manager.middleware.runAll('start'),
499
+ this.manager.game.runAll('start'),
500
+ // this.manager.zone.runAll('start'),
501
+ this.manager.app.runAll('start'),
502
+ this.manager.mod.runAll('start')
503
+ ]);
504
+ };
505
+
506
+ /**
507
+ * 启动适配器
508
+ */
509
+ Server.prototype._startAdapter = async function () {
510
+ for (var k in this.adapter) {
511
+ try {
512
+ await this.adapter[k].start();
513
+ } catch (error) {
514
+ this.log('error', '启动适配器失败:', error);
515
+ }
516
+ }
517
+ };
518
+
519
+ /**
520
+ * 停止适配器
521
+ */
522
+ Server.prototype._stopAdapter = async function () {
523
+ for (var k in this.adapter) {
524
+ try {
525
+ await this.adapter[k].stop();
526
+ } catch (error) {
527
+ this.log('error', '停止适配器失败:', error);
528
+ }
529
+ }
530
+ };
531
+
532
+ /**
533
+ * 停止
534
+ */
535
+ Server.prototype._stop = async function () {
536
+ await this._stopAdapter();
537
+ };
538
+
539
+ /**
540
+ * 启动
541
+ */
542
+ Server.prototype._start = async function () {
543
+ $.sql.open();
544
+ $.cache.connect();
545
+
546
+ // 启动资源
547
+ await this._startSources();
548
+
549
+ // 启动适配器
550
+ await this._startAdapter();
551
+ };
552
+
553
+ /**
554
+ * 加载资源
555
+ */
556
+ Server.prototype._loadSources = async function () {
557
+ // 加载无需依赖关系,所以可以同时加载,内部并行执行
558
+ await Promise.all([
559
+ this.manager.game.runAll('load'),
560
+ // this.manager.zone.runAll('load'),
561
+ this.manager.app.runAll('load'),
562
+ this.manager.middleware.runAll('load'),
563
+ this.manager.mod.runAll('load')
564
+ ]);
565
+ };
566
+
567
+ /**
568
+ * 启动服务器
569
+ */
570
+ Server.prototype.start = async function () {
571
+ try {
572
+ if (this.status === 'created') {
573
+ await this.init();
574
+ }
575
+ await this._start();
576
+ this.log('info', '服务器启动成功');
577
+ } catch (error) {
578
+ this.log('error', '服务器启动失败:', error);
579
+ throw error;
580
+ }
581
+ };
582
+
583
+ /**
584
+ * 初始化全局错误处理机制
585
+ */
586
+ Server.prototype._initErrorRun = function () {
587
+ // 全局未捕获异常处理
588
+ process.on('uncaughtException', (error) => {
589
+ this.log('error', '全局未捕获异常:', error);
590
+ });
591
+
592
+ // 全局未处理Promise拒绝处理
593
+ process.on('unhandledRejection', (reason) => {
594
+ this.log('error', '全局未处理Promise拒绝:', reason);
595
+ });
596
+ };
597
+
598
+ exports.Server = Server;
package/README.en.md DELETED
@@ -1,36 +0,0 @@
1
- # 服务端框架
2
-
3
- #### Description
4
- 这是服务端框架,网站、游戏、小程序服务端可基于该框架进行二次开发
5
-
6
- #### Software Architecture
7
- Software architecture description
8
-
9
- #### Installation
10
-
11
- 1. xxxx
12
- 2. xxxx
13
- 3. xxxx
14
-
15
- #### Instructions
16
-
17
- 1. xxxx
18
- 2. xxxx
19
- 3. xxxx
20
-
21
- #### Contribution
22
-
23
- 1. Fork the repository
24
- 2. Create Feat_xxx branch
25
- 3. Commit your code
26
- 4. Create Pull Request
27
-
28
-
29
- #### Gitee Feature
30
-
31
- 1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
32
- 2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
33
- 3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
34
- 4. The most valuable open source project [GVP](https://gitee.com/gvp)
35
- 5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
36
- 6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
package/conf.json DELETED
@@ -1,3 +0,0 @@
1
- {
2
- "runPath": "E:\\gitee\\1_doing\\mm\\mm_os"
3
- }