cgserver 5.4.12 → 5.4.13

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 (199) hide show
  1. package/lib/Framework/AI/AiObject.d.ts +5 -0
  2. package/lib/Framework/AI/AiObject.js +11 -0
  3. package/lib/Framework/AI/AiObject.js.map +1 -0
  4. package/lib/Framework/AI/Astar.d.ts +38 -0
  5. package/lib/Framework/AI/Astar.js +134 -0
  6. package/lib/Framework/AI/Astar.js.map +1 -0
  7. package/lib/Framework/AI/BehaviorAI.d.ts +24 -0
  8. package/lib/Framework/AI/BehaviorAI.js +308 -0
  9. package/lib/Framework/AI/BehaviorAI.js.map +1 -0
  10. package/lib/Framework/AI/Entity.d.ts +12 -0
  11. package/lib/Framework/AI/Entity.js +34 -0
  12. package/lib/Framework/AI/Entity.js.map +1 -0
  13. package/lib/Framework/AI/Point.d.ts +17 -0
  14. package/lib/Framework/AI/Point.js +69 -0
  15. package/lib/Framework/AI/Point.js.map +1 -0
  16. package/lib/Framework/AI/TriggerMgr.d.ts +52 -0
  17. package/lib/Framework/AI/TriggerMgr.js +202 -0
  18. package/lib/Framework/AI/TriggerMgr.js.map +1 -0
  19. package/lib/Framework/Config/Config.d.ts +7 -0
  20. package/lib/Framework/Config/Config.js +38 -0
  21. package/lib/Framework/Config/Config.js.map +1 -0
  22. package/lib/Framework/Config/FrameworkConfig.d.ts +219 -0
  23. package/lib/Framework/Config/FrameworkConfig.js +225 -0
  24. package/lib/Framework/Config/FrameworkConfig.js.map +1 -0
  25. package/lib/Framework/Config/ServerConfig.d.ts +9 -0
  26. package/lib/Framework/Config/ServerConfig.js +19 -0
  27. package/lib/Framework/Config/ServerConfig.js.map +1 -0
  28. package/lib/Framework/Config/_error_.d.ts +95 -0
  29. package/lib/Framework/Config/_error_.js +35 -0
  30. package/lib/Framework/Config/_error_.js.map +1 -0
  31. package/lib/Framework/Core/Core.d.ts +101 -0
  32. package/lib/Framework/Core/Core.js +562 -0
  33. package/lib/Framework/Core/Core.js.map +1 -0
  34. package/lib/Framework/Core/Timer.d.ts +16 -0
  35. package/lib/Framework/Core/Timer.js +117 -0
  36. package/lib/Framework/Core/Timer.js.map +1 -0
  37. package/lib/Framework/Database/BaseMongoService.d.ts +67 -0
  38. package/lib/Framework/Database/BaseMongoService.js +80 -0
  39. package/lib/Framework/Database/BaseMongoService.js.map +1 -0
  40. package/lib/Framework/Database/BaseService.d.ts +34 -0
  41. package/lib/Framework/Database/BaseService.js +282 -0
  42. package/lib/Framework/Database/BaseService.js.map +1 -0
  43. package/lib/Framework/Database/Decorator/AutoIncrement.d.ts +1 -0
  44. package/lib/Framework/Database/Decorator/AutoIncrement.js +12 -0
  45. package/lib/Framework/Database/Decorator/AutoIncrement.js.map +1 -0
  46. package/lib/Framework/Database/Decorator/DBCache.d.ts +21 -0
  47. package/lib/Framework/Database/Decorator/DBCache.js +65 -0
  48. package/lib/Framework/Database/Decorator/DBCache.js.map +1 -0
  49. package/lib/Framework/Database/Decorator/NotNull.d.ts +1 -0
  50. package/lib/Framework/Database/Decorator/NotNull.js +12 -0
  51. package/lib/Framework/Database/Decorator/NotNull.js.map +1 -0
  52. package/lib/Framework/Database/Decorator/PrimaryKey.d.ts +1 -0
  53. package/lib/Framework/Database/Decorator/PrimaryKey.js +12 -0
  54. package/lib/Framework/Database/Decorator/PrimaryKey.js.map +1 -0
  55. package/lib/Framework/Database/Decorator/Property.d.ts +55 -0
  56. package/lib/Framework/Database/Decorator/Property.js +62 -0
  57. package/lib/Framework/Database/Decorator/Property.js.map +1 -0
  58. package/lib/Framework/Database/Decorator/Table.d.ts +1 -0
  59. package/lib/Framework/Database/Decorator/Table.js +16 -0
  60. package/lib/Framework/Database/Decorator/Table.js.map +1 -0
  61. package/lib/Framework/Database/Decorator/Type.d.ts +1 -0
  62. package/lib/Framework/Database/Decorator/Type.js +21 -0
  63. package/lib/Framework/Database/Decorator/Type.js.map +1 -0
  64. package/lib/Framework/Database/MongoManager.d.ts +135 -0
  65. package/lib/Framework/Database/MongoManager.js +407 -0
  66. package/lib/Framework/Database/MongoManager.js.map +1 -0
  67. package/lib/Framework/Database/MysqlManager.d.ts +41 -0
  68. package/lib/Framework/Database/MysqlManager.js +181 -0
  69. package/lib/Framework/Database/MysqlManager.js.map +1 -0
  70. package/lib/Framework/Database/RedisManager.d.ts +64 -0
  71. package/lib/Framework/Database/RedisManager.js +409 -0
  72. package/lib/Framework/Database/RedisManager.js.map +1 -0
  73. package/lib/Framework/Logic/CacheTool.d.ts +25 -0
  74. package/lib/Framework/Logic/CacheTool.js +74 -0
  75. package/lib/Framework/Logic/CacheTool.js.map +1 -0
  76. package/lib/Framework/Logic/HttpTool.d.ts +14 -0
  77. package/lib/Framework/Logic/HttpTool.js +59 -0
  78. package/lib/Framework/Logic/HttpTool.js.map +1 -0
  79. package/lib/Framework/Logic/Log.d.ts +15 -0
  80. package/lib/Framework/Logic/Log.js +78 -0
  81. package/lib/Framework/Logic/Log.js.map +1 -0
  82. package/lib/Framework/Service/AccountService.d.ts +77 -0
  83. package/lib/Framework/Service/AccountService.js +474 -0
  84. package/lib/Framework/Service/AccountService.js.map +1 -0
  85. package/lib/Framework/Service/MongoAccountService.d.ts +78 -0
  86. package/lib/Framework/Service/MongoAccountService.js +397 -0
  87. package/lib/Framework/Service/MongoAccountService.js.map +1 -0
  88. package/lib/Framework/Service/MongoCacheService.d.ts +13 -0
  89. package/lib/Framework/Service/MongoCacheService.js +28 -0
  90. package/lib/Framework/Service/MongoCacheService.js.map +1 -0
  91. package/lib/Framework/Service/MongoUserService.d.ts +36 -0
  92. package/lib/Framework/Service/MongoUserService.js +94 -0
  93. package/lib/Framework/Service/MongoUserService.js.map +1 -0
  94. package/lib/Framework/Service/UserService.d.ts +36 -0
  95. package/lib/Framework/Service/UserService.js +185 -0
  96. package/lib/Framework/Service/UserService.js.map +1 -0
  97. package/lib/Framework/Service/ini.d.ts +28 -0
  98. package/lib/Framework/Service/ini.js +36 -0
  99. package/lib/Framework/Service/ini.js.map +1 -0
  100. package/lib/Framework/SocketServer/IClientWebSocket.d.ts +24 -0
  101. package/lib/Framework/SocketServer/IClientWebSocket.js +72 -0
  102. package/lib/Framework/SocketServer/IClientWebSocket.js.map +1 -0
  103. package/lib/Framework/SocketServer/IServerWebSocket.d.ts +13 -0
  104. package/lib/Framework/SocketServer/IServerWebSocket.js +42 -0
  105. package/lib/Framework/SocketServer/IServerWebSocket.js.map +1 -0
  106. package/lib/Framework/SocketServer/ISocketServer.d.ts +36 -0
  107. package/lib/Framework/SocketServer/ISocketServer.js +189 -0
  108. package/lib/Framework/SocketServer/ISocketServer.js.map +1 -0
  109. package/lib/Framework/SocketServer/IWebSocket.d.ts +44 -0
  110. package/lib/Framework/SocketServer/IWebSocket.js +224 -0
  111. package/lib/Framework/SocketServer/IWebSocket.js.map +1 -0
  112. package/lib/Framework/SocketServer/ProtoFilter/GoogleProtoFilter.d.ts +9 -0
  113. package/lib/Framework/SocketServer/ProtoFilter/GoogleProtoFilter.js +58 -0
  114. package/lib/Framework/SocketServer/ProtoFilter/GoogleProtoFilter.js.map +1 -0
  115. package/lib/Framework/SocketServer/ProtoFilter/IProtoFilter.d.ts +9 -0
  116. package/lib/Framework/SocketServer/ProtoFilter/IProtoFilter.js +9 -0
  117. package/lib/Framework/SocketServer/ProtoFilter/IProtoFilter.js.map +1 -0
  118. package/lib/Framework/SocketServer/ProtoFilter/JsonProtoFilter.d.ts +6 -0
  119. package/lib/Framework/SocketServer/ProtoFilter/JsonProtoFilter.js +30 -0
  120. package/lib/Framework/SocketServer/ProtoFilter/JsonProtoFilter.js.map +1 -0
  121. package/lib/Framework/SocketServer/ProtoFilter/ProtoFactory.d.ts +8 -0
  122. package/lib/Framework/SocketServer/ProtoFilter/ProtoFactory.js +32 -0
  123. package/lib/Framework/SocketServer/ProtoFilter/ProtoFactory.js.map +1 -0
  124. package/lib/Framework/ThirdParty/AlipayTool.d.ts +40 -0
  125. package/lib/Framework/ThirdParty/AlipayTool.js +123 -0
  126. package/lib/Framework/ThirdParty/AlipayTool.js.map +1 -0
  127. package/lib/Framework/ThirdParty/Alisms.d.ts +14 -0
  128. package/lib/Framework/ThirdParty/Alisms.js +47 -0
  129. package/lib/Framework/ThirdParty/Alisms.js.map +1 -0
  130. package/lib/Framework/ThirdParty/AppleTool.d.ts +131 -0
  131. package/lib/Framework/ThirdParty/AppleTool.js +235 -0
  132. package/lib/Framework/ThirdParty/AppleTool.js.map +1 -0
  133. package/lib/Framework/ThirdParty/EmailTool.d.ts +5 -0
  134. package/lib/Framework/ThirdParty/EmailTool.js +34 -0
  135. package/lib/Framework/ThirdParty/EmailTool.js.map +1 -0
  136. package/lib/Framework/ThirdParty/OpenSocial.d.ts +7 -0
  137. package/lib/Framework/ThirdParty/OpenSocial.js +33 -0
  138. package/lib/Framework/ThirdParty/OpenSocial.js.map +1 -0
  139. package/lib/Framework/ThirdParty/QQTool.d.ts +41 -0
  140. package/lib/Framework/ThirdParty/QQTool.js +116 -0
  141. package/lib/Framework/ThirdParty/QQTool.js.map +1 -0
  142. package/lib/Framework/ThirdParty/QiniuTool.d.ts +6 -0
  143. package/lib/Framework/ThirdParty/QiniuTool.js +22 -0
  144. package/lib/Framework/ThirdParty/QiniuTool.js.map +1 -0
  145. package/lib/Framework/ThirdParty/WechatOATool.d.ts +13 -0
  146. package/lib/Framework/ThirdParty/WechatOATool.js +62 -0
  147. package/lib/Framework/ThirdParty/WechatOATool.js.map +1 -0
  148. package/lib/Framework/ThirdParty/WechatTool.d.ts +20 -0
  149. package/lib/Framework/ThirdParty/WechatTool.js +75 -0
  150. package/lib/Framework/ThirdParty/WechatTool.js.map +1 -0
  151. package/lib/Framework/WebServer/Controller/BaseController.d.ts +33 -0
  152. package/lib/Framework/WebServer/Controller/BaseController.js +113 -0
  153. package/lib/Framework/WebServer/Controller/BaseController.js.map +1 -0
  154. package/lib/Framework/WebServer/Controller/BaseUserController.d.ts +26 -0
  155. package/lib/Framework/WebServer/Controller/BaseUserController.js +169 -0
  156. package/lib/Framework/WebServer/Controller/BaseUserController.js.map +1 -0
  157. package/lib/Framework/WebServer/Controller/MongoBaseUserController.d.ts +26 -0
  158. package/lib/Framework/WebServer/Controller/MongoBaseUserController.js +169 -0
  159. package/lib/Framework/WebServer/Controller/MongoBaseUserController.js.map +1 -0
  160. package/lib/Framework/WebServer/Decorator/AdminValidate.d.ts +1 -0
  161. package/lib/Framework/WebServer/Decorator/AdminValidate.js +20 -0
  162. package/lib/Framework/WebServer/Decorator/AdminValidate.js.map +1 -0
  163. package/lib/Framework/WebServer/Decorator/AuthorityValidate.d.ts +2 -0
  164. package/lib/Framework/WebServer/Decorator/AuthorityValidate.js +23 -0
  165. package/lib/Framework/WebServer/Decorator/AuthorityValidate.js.map +1 -0
  166. package/lib/Framework/WebServer/Decorator/CreatorValidate.d.ts +1 -0
  167. package/lib/Framework/WebServer/Decorator/CreatorValidate.js +20 -0
  168. package/lib/Framework/WebServer/Decorator/CreatorValidate.js.map +1 -0
  169. package/lib/Framework/WebServer/Decorator/JsonAdminValidate.d.ts +1 -0
  170. package/lib/Framework/WebServer/Decorator/JsonAdminValidate.js +16 -0
  171. package/lib/Framework/WebServer/Decorator/JsonAdminValidate.js.map +1 -0
  172. package/lib/Framework/WebServer/Decorator/JsonAuthorityValidate.d.ts +2 -0
  173. package/lib/Framework/WebServer/Decorator/JsonAuthorityValidate.js +21 -0
  174. package/lib/Framework/WebServer/Decorator/JsonAuthorityValidate.js.map +1 -0
  175. package/lib/Framework/WebServer/Decorator/JsonCreatorValidate.d.ts +1 -0
  176. package/lib/Framework/WebServer/Decorator/JsonCreatorValidate.js +20 -0
  177. package/lib/Framework/WebServer/Decorator/JsonCreatorValidate.js.map +1 -0
  178. package/lib/Framework/WebServer/Engine/ControllerManager.d.ts +21 -0
  179. package/lib/Framework/WebServer/Engine/ControllerManager.js +113 -0
  180. package/lib/Framework/WebServer/Engine/ControllerManager.js.map +1 -0
  181. package/lib/Framework/WebServer/Engine/Engine.d.ts +21 -0
  182. package/lib/Framework/WebServer/Engine/Engine.js +129 -0
  183. package/lib/Framework/WebServer/Engine/Engine.js.map +1 -0
  184. package/lib/Framework/WebServer/Engine/RazorJs.d.ts +21 -0
  185. package/lib/Framework/WebServer/Engine/RazorJs.js +545 -0
  186. package/lib/Framework/WebServer/Engine/RazorJs.js.map +1 -0
  187. package/lib/Framework/WebServer/Engine/Request.d.ts +35 -0
  188. package/lib/Framework/WebServer/Engine/Request.js +215 -0
  189. package/lib/Framework/WebServer/Engine/Request.js.map +1 -0
  190. package/lib/Framework/WebServer/Engine/Response.d.ts +28 -0
  191. package/lib/Framework/WebServer/Engine/Response.js +95 -0
  192. package/lib/Framework/WebServer/Engine/Response.js.map +1 -0
  193. package/lib/Framework/WebServer/IWebServer.d.ts +20 -0
  194. package/lib/Framework/WebServer/IWebServer.js +50 -0
  195. package/lib/Framework/WebServer/IWebServer.js.map +1 -0
  196. package/lib/index.d.ts +4 -0
  197. package/lib/index.js +8 -0
  198. package/lib/index.js.map +1 -0
  199. package/package.json +1 -1
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ISocketServer = void 0;
4
+ const MysqlManager_1 = require("../Database/MysqlManager");
5
+ const RedisManager_1 = require("../Database/RedisManager");
6
+ const ws = require("websocket");
7
+ const Log_1 = require("./../Logic/Log");
8
+ const fs = require("fs");
9
+ const http = require("http");
10
+ const https = require("https");
11
+ const FrameworkConfig_1 = require("../Config/FrameworkConfig");
12
+ const MongoManager_1 = require("../Database/MongoManager");
13
+ class ISocketServer {
14
+ //服务器已被关闭
15
+ _is_closed = false;
16
+ get isClosed() {
17
+ return this._is_closed;
18
+ }
19
+ _code = -1; //服务器唯一编码
20
+ get code() {
21
+ return this._code;
22
+ }
23
+ set code(value) {
24
+ this._code = value;
25
+ }
26
+ _name = "";
27
+ get name() {
28
+ return this._name;
29
+ }
30
+ get fullServerName() {
31
+ return this._name + "@" + this._code;
32
+ }
33
+ //监听websocket
34
+ _web_socket = null;
35
+ get serverWebSocket() {
36
+ return this._web_socket;
37
+ }
38
+ //来自于用户的链接
39
+ _ws_clients = new Map();
40
+ _listen_port = 0;
41
+ get listenPort() {
42
+ return this._listen_port;
43
+ }
44
+ set listenPort(value) {
45
+ this._listen_port = value;
46
+ }
47
+ /**
48
+ * websocket can accepted protocol
49
+ */
50
+ _accepted_protocol = null;
51
+ //服务器管理相关
52
+ /*
53
+ item=servername:class
54
+ */
55
+ _name_vs_class = {};
56
+ registerWebSocketHandleClass(name, cls) {
57
+ if (!name || name == "") {
58
+ throw "registerWebSocketHandleClass name must be not null or empty!";
59
+ }
60
+ this._name_vs_class[name] = cls;
61
+ }
62
+ constructor(server_name) {
63
+ this._name = server_name;
64
+ }
65
+ removeServerWebSocketBySocketId(socketId) {
66
+ this._ws_clients[socketId] = null;
67
+ delete this._ws_clients[socketId];
68
+ }
69
+ async run() {
70
+ await MysqlManager_1.GMysqlMgr.init();
71
+ await RedisManager_1.GRedisMgr.init(FrameworkConfig_1.GFCfg.db.redis);
72
+ await MongoManager_1.GMongoMgr.init();
73
+ let code = await RedisManager_1.GRedisMgr.incr("server_code");
74
+ this._code = code;
75
+ setTimeout(this.initWebSocket.bind(this), 3000); //给数据库相关留一点时间
76
+ }
77
+ stop() {
78
+ this._is_closed = true;
79
+ this._web_socket.closeAllConnections();
80
+ }
81
+ /*
82
+ 把所有的客户端链接保存起来
83
+ 方便统计,广播等
84
+ */
85
+ addClient(client_server) {
86
+ this._ws_clients[client_server.socketId] = client_server;
87
+ }
88
+ isOriginAllowed(origin) {
89
+ return true;
90
+ }
91
+ initWebSocket(wss) {
92
+ let server = null;
93
+ if (wss) {
94
+ console.log("wss:---");
95
+ let options = {
96
+ key: fs.readFileSync("ssl/ssl2.key"),
97
+ cert: fs.readFileSync("ssl/ssl2.crt"),
98
+ //passphrase:'1234'//如果秘钥文件有密码的话,用这个属性设置密码
99
+ };
100
+ server = https.createServer(options, (request, response) => {
101
+ Log_1.GLog.info((new Date()) + 'wss Received request for ' + request.url);
102
+ response.writeHead(404);
103
+ response.end();
104
+ });
105
+ }
106
+ else {
107
+ server = http.createServer((request, response) => {
108
+ Log_1.GLog.info((new Date()) + 'ws Received request for ' + request.url);
109
+ response.writeHead(404);
110
+ response.end();
111
+ });
112
+ }
113
+ server.listen(this._listen_port, this.onListenning.bind(this));
114
+ this._web_socket = new ws.server({
115
+ httpServer: server,
116
+ // You should not use autoAcceptConnections for production
117
+ // applications, as it defeats all standard cross-origin protection
118
+ // facilities built into the protocol and the browser. You should
119
+ // *always* verify the connection's origin and decide whether or not
120
+ // to accept it.
121
+ autoAcceptConnections: false
122
+ });
123
+ this._web_socket.on('request', this.onRequest.bind(this));
124
+ this._web_socket.on('close', this.onClose.bind(this));
125
+ }
126
+ onClose(connection, reason, desc) {
127
+ }
128
+ onListenning() {
129
+ let info = (new Date()) + " Server " + this.fullServerName + " is listening on port " + this._listen_port;
130
+ Log_1.GLog.info(info);
131
+ console.log(info);
132
+ }
133
+ onRequest(req) {
134
+ if (this._is_closed) {
135
+ return;
136
+ }
137
+ let protocol = null;
138
+ if (req.requestedProtocols.length > 0) {
139
+ protocol = req.requestedProtocols[0];
140
+ }
141
+ let allowed = this.isOriginAllowed(req.origin);
142
+ if (!allowed) {
143
+ req.reject();
144
+ Log_1.GLog.info(' Connection from origin ' + req.origin + ' rejected.', true);
145
+ return;
146
+ }
147
+ try {
148
+ let conn = req.accept(this._accepted_protocol, req.origin);
149
+ if (!conn) {
150
+ Log_1.GLog.info(' protocol reject', true);
151
+ return;
152
+ }
153
+ Log_1.GLog.info((new Date()) + ' Connection accepted.');
154
+ let server_name = this._getServerNameByCookies(req.cookies);
155
+ this.createWebSocketObjectByProtocol(server_name, conn);
156
+ }
157
+ catch (e) {
158
+ Log_1.GLog.info(' protocol reject', true);
159
+ }
160
+ }
161
+ createWebSocketObjectByProtocol(server_name, _ws) {
162
+ server_name = server_name || "default";
163
+ let cls = this._name_vs_class[server_name];
164
+ if (!cls) {
165
+ Log_1.GLog.error("(createWebSocketObjectByProtocol in server(" + this.name + "))no this websocket handle class=" + server_name);
166
+ return null;
167
+ }
168
+ let ws_server = (new cls(this));
169
+ this.addClient(ws_server);
170
+ ws_server.onConnect(_ws);
171
+ return ws_server;
172
+ }
173
+ _getServerNameByCookies(cookies) {
174
+ let server_name = "";
175
+ if (!cookies) {
176
+ return server_name;
177
+ }
178
+ for (let index in cookies) {
179
+ let cookie = cookies[index];
180
+ if (cookie.name == "server") {
181
+ server_name = cookie.value;
182
+ break;
183
+ }
184
+ }
185
+ return server_name;
186
+ }
187
+ }
188
+ exports.ISocketServer = ISocketServer;
189
+ //# sourceMappingURL=ISocketServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ISocketServer.js","sourceRoot":"","sources":["../../../Framework/SocketServer/ISocketServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { IProtoFilter, EProtoType } from "./ProtoFilter/IProtoFilter";
2
+ import * as ws from 'websocket';
3
+ export declare class IWebSocket {
4
+ protected _await: boolean;
5
+ get await(): boolean;
6
+ protected _debug_msg: boolean;
7
+ get debug_msg(): boolean;
8
+ set debug_msg(value: boolean);
9
+ protected _socket_id: number;
10
+ get socketId(): number;
11
+ protected _tipKey: string;
12
+ get tipKey(): string;
13
+ protected _ws: ws.connection;
14
+ protected _protoType: EProtoType;
15
+ protected _protoFilter: IProtoFilter;
16
+ protected _protoPath: string;
17
+ protected _ip: string;
18
+ get remoteHost(): string;
19
+ get connected(): boolean;
20
+ constructor(protoType?: EProtoType, protoPath?: string);
21
+ getNewMsg(cmd: any, errcode?: any): any;
22
+ receive_heartbeat(jsonData: any): void;
23
+ send_heartbeat(): void;
24
+ onConnect(_ws: ws.connection): void;
25
+ protected _msgs: Array<any>;
26
+ onMessage(message: ws.Message): void;
27
+ protected _onDecode(message: ws.Message, ...params: any[]): any;
28
+ protected _onEncode(data: any, ...params: any[]): any;
29
+ protected _run_await: boolean;
30
+ protected _awaitMessages(): Promise<void>;
31
+ /**
32
+ * 过滤消息,每个消息处理之前调用
33
+ * @param jsonData
34
+ * @returns
35
+ */
36
+ filterMsg(jsonData: any): boolean;
37
+ protected _onMessage(data: any): Promise<void>;
38
+ onOpen(e?: any): void;
39
+ onError(e: Error): void;
40
+ onClose(reasonCode: number, description: string): void;
41
+ send(data: any): void;
42
+ close(): void;
43
+ getServerNameFromCmd(cmd: any): any;
44
+ }
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IWebSocket = void 0;
4
+ const Log_1 = require("../Logic/Log");
5
+ const ProtoFactory_1 = require("./ProtoFilter/ProtoFactory");
6
+ const IProtoFilter_1 = require("./ProtoFilter/IProtoFilter");
7
+ const Core_1 = require("../Core/Core");
8
+ const FrameworkConfig_1 = require("../Config/FrameworkConfig");
9
+ const _ = require("underscore");
10
+ let WebSocketIdMgr = {
11
+ id: _.random(0, 9998),
12
+ getNewID() {
13
+ return this.id++;
14
+ },
15
+ };
16
+ class IWebSocket {
17
+ _await = false;
18
+ get await() {
19
+ return this._await;
20
+ }
21
+ _debug_msg = false;
22
+ get debug_msg() {
23
+ return this._debug_msg;
24
+ }
25
+ set debug_msg(value) {
26
+ this._debug_msg = value;
27
+ }
28
+ _socket_id = 0;
29
+ get socketId() {
30
+ return this._socket_id;
31
+ }
32
+ _tipKey = "";
33
+ get tipKey() {
34
+ return this._tipKey;
35
+ }
36
+ _ws = null;
37
+ _protoType = IProtoFilter_1.EProtoType.Json;
38
+ _protoFilter = null;
39
+ _protoPath = "";
40
+ _ip = null;
41
+ get remoteHost() {
42
+ if (!this._ip) {
43
+ this._ip = this._ws.remoteAddress;
44
+ this._ip = this._ip.substring(this._ip.lastIndexOf(":") + 1);
45
+ }
46
+ return this._ip;
47
+ }
48
+ get connected() {
49
+ if (this._ws
50
+ && this._ws.connected == true) {
51
+ return true;
52
+ }
53
+ return false;
54
+ }
55
+ constructor(protoType = IProtoFilter_1.EProtoType.Json, protoPath = "") {
56
+ this._debug_msg = FrameworkConfig_1.GFCfg.debug_msg;
57
+ this._socket_id = WebSocketIdMgr.getNewID();
58
+ this._protoType = protoType;
59
+ this._protoPath = protoPath;
60
+ }
61
+ getNewMsg(cmd, errcode) {
62
+ let msg = {
63
+ cmd: cmd,
64
+ errcode: errcode,
65
+ servertime: new Date().getTime()
66
+ };
67
+ return msg;
68
+ }
69
+ receive_heartbeat(jsonData) {
70
+ this.send_heartbeat();
71
+ }
72
+ send_heartbeat() {
73
+ let msg = this.getNewMsg("heartbeat");
74
+ this.send(msg);
75
+ }
76
+ onConnect(_ws) {
77
+ this._ws = _ws;
78
+ if (!this._protoFilter) {
79
+ this._protoFilter = ProtoFactory_1.GProtoFactory.createFilter(this._protoType);
80
+ this._protoFilter.init(this._protoPath);
81
+ }
82
+ this._ws.on("message", this.onMessage.bind(this));
83
+ this._ws.on("error", this.onError.bind(this));
84
+ this._ws.on("close", this.onClose.bind(this));
85
+ this.onOpen();
86
+ }
87
+ _msgs = [];
88
+ onMessage(message) {
89
+ try {
90
+ let msg = this._onDecode(message);
91
+ if (this._await) {
92
+ this._msgs.push(msg);
93
+ if (!this._run_await) {
94
+ this._awaitMessages();
95
+ }
96
+ }
97
+ else {
98
+ this._onMessage(msg);
99
+ }
100
+ }
101
+ catch (e) {
102
+ Log_1.GLog.error('Received Message Handle Error: ' + e);
103
+ }
104
+ }
105
+ _onDecode(message, ...params) {
106
+ let msg = null;
107
+ if (message.type === 'utf8') {
108
+ msg = this._protoFilter.decode(message.utf8Data, ...params);
109
+ }
110
+ else if (message.type === 'binary') {
111
+ msg = this._protoFilter.decode(message.binaryData, ...params);
112
+ }
113
+ return msg;
114
+ }
115
+ _onEncode(data, ...params) {
116
+ let msg = this._protoFilter.encode(data, ...params);
117
+ return msg;
118
+ }
119
+ _run_await = false;
120
+ async _awaitMessages() {
121
+ this._run_await = true;
122
+ while (this._msgs.length > 0) {
123
+ let msg = this._msgs.shift();
124
+ await this._onMessage(msg);
125
+ }
126
+ this._run_await = false;
127
+ }
128
+ /**
129
+ * 过滤消息,每个消息处理之前调用
130
+ * @param jsonData
131
+ * @returns
132
+ */
133
+ filterMsg(jsonData) {
134
+ if (this._debug_msg
135
+ && jsonData
136
+ && jsonData.cmd != "heartbeat") {
137
+ Log_1.GLog.info(this.tipKey + " receive:--------", true);
138
+ Log_1.GLog.info(jsonData, true);
139
+ }
140
+ if (!jsonData.cmd || jsonData.cmd == "") {
141
+ Log_1.GLog.error('Received Message warning: no cmd param,data=');
142
+ Log_1.GLog.error(jsonData);
143
+ return false;
144
+ }
145
+ return true;
146
+ }
147
+ async _onMessage(data) {
148
+ let jsonData = data;
149
+ let ret = this.filterMsg(jsonData);
150
+ if (!ret) {
151
+ return;
152
+ }
153
+ else if (!this["receive_" + jsonData.cmd]) {
154
+ if (this["receive_other_all"]) {
155
+ try {
156
+ await this["receive_other_all"](jsonData); //默认支持其他所有处理消息
157
+ }
158
+ catch (e) {
159
+ if (e && e.stack) {
160
+ Log_1.GLog.error(e.stack);
161
+ }
162
+ else {
163
+ Log_1.GLog.error(e + " msg:data=" + JSON.stringify(jsonData));
164
+ }
165
+ }
166
+ }
167
+ else {
168
+ Log_1.GLog.error('Received Message warning: no cmd handle,cmd=' + jsonData.cmd);
169
+ }
170
+ }
171
+ else {
172
+ try {
173
+ await this["receive_" + jsonData.cmd](jsonData);
174
+ }
175
+ catch (e) {
176
+ if (e && e.stack) {
177
+ Log_1.GLog.error("error msg:data=" + JSON.stringify(jsonData) + "\n" + e.stack);
178
+ }
179
+ else {
180
+ Log_1.GLog.error(e + " msg:data=" + JSON.stringify(jsonData));
181
+ }
182
+ }
183
+ }
184
+ }
185
+ onOpen(e) {
186
+ }
187
+ onError(e) {
188
+ Log_1.GLog.info("onError:" + e.message);
189
+ }
190
+ onClose(reasonCode, description) {
191
+ Log_1.GLog.info("onClose resonCode=" + reasonCode + " des=" + description);
192
+ }
193
+ send(data) {
194
+ if (!this.connected) {
195
+ return;
196
+ }
197
+ if (!data) {
198
+ Log_1.GLog.error("Send Message warning:null data!");
199
+ return;
200
+ }
201
+ if (this._debug_msg
202
+ && data.cmd != "heartbeat") {
203
+ Log_1.GLog.info(this.tipKey + " send:-----------------------------------", true);
204
+ Log_1.GLog.info(data, true);
205
+ }
206
+ let msg = this._onEncode(data);
207
+ this._ws.send(msg);
208
+ }
209
+ close() {
210
+ this._ws.close();
211
+ }
212
+ getServerNameFromCmd(cmd) {
213
+ if (!cmd || !Core_1.core.isString(cmd)) {
214
+ return null;
215
+ }
216
+ let index = cmd.indexOf("_");
217
+ if (index <= 0) {
218
+ return null;
219
+ }
220
+ return cmd.substring(0, index);
221
+ }
222
+ }
223
+ exports.IWebSocket = IWebSocket;
224
+ //# sourceMappingURL=IWebSocket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IWebSocket.js","sourceRoot":"","sources":["../../../Framework/SocketServer/IWebSocket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { IProtoFilter } from './IProtoFilter';
2
+ import * as protobufjs from 'protobufjs';
3
+ export declare class GoogleProtoFilter implements IProtoFilter {
4
+ protected _root: protobufjs.Root;
5
+ protected _inited: boolean;
6
+ init(path?: string): boolean;
7
+ encode(data: any, root: string): Uint8Array;
8
+ decode(data: any, root: string): any;
9
+ }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GoogleProtoFilter = void 0;
4
+ const Log_1 = require("../../Logic/Log");
5
+ const protobufjs = require("protobufjs");
6
+ class GoogleProtoFilter {
7
+ _root = new protobufjs.Root();
8
+ _inited = false;
9
+ init(path) {
10
+ if (this._inited) {
11
+ return;
12
+ }
13
+ this._inited = true;
14
+ try {
15
+ this._root.loadSync(path, { keepCase: true });
16
+ }
17
+ catch (e) {
18
+ Log_1.GLog.error(e);
19
+ return false;
20
+ }
21
+ return true;
22
+ }
23
+ encode(data, root) {
24
+ let msg = { cmd: data.cmd };
25
+ msg[msg.cmd] = data;
26
+ msg[msg.cmd].cmd = undefined;
27
+ msg["errcode"] = data.errcode;
28
+ msg["tip"] = data.tip;
29
+ data.errcode = undefined;
30
+ delete data.errcode;
31
+ delete msg[msg.cmd].cmd;
32
+ let body = this._root.lookupType(root);
33
+ var errMsg = body.verify(msg);
34
+ if (errMsg)
35
+ throw Error(errMsg);
36
+ var msgBody = body.create(msg);
37
+ var bufferBody = body.encode(msgBody).finish();
38
+ return bufferBody;
39
+ }
40
+ decode(data, root) {
41
+ let body = this._root.lookupType(root);
42
+ if (!body) {
43
+ Log_1.GLog.info("proto body not in proto(!" + root + ")");
44
+ return null;
45
+ }
46
+ let msgBody = body.decode(data);
47
+ if (!msgBody) {
48
+ Log_1.GLog.info("proto body decode wrong!");
49
+ return null;
50
+ }
51
+ let objBody = body.toObject(msgBody);
52
+ let obj = objBody[objBody.cmd];
53
+ obj.cmd = objBody.cmd;
54
+ return obj;
55
+ }
56
+ }
57
+ exports.GoogleProtoFilter = GoogleProtoFilter;
58
+ //# sourceMappingURL=GoogleProtoFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GoogleProtoFilter.js","sourceRoot":"","sources":["../../../../Framework/SocketServer/ProtoFilter/GoogleProtoFilter.ts"],"names":[],"mappings":";;;AAEA,yCAAuC;AACvC,yCAAyC;AAEzC,MAAa,iBAAiB;IAEhB,KAAK,GAAiB,IAAI,UAAU,CAAC,IAAI,EAAE,CAAA;IAC3C,OAAO,GAAC,KAAK,CAAA;IACvB,IAAI,CAAC,IAAY;QAEb,IAAG,IAAI,CAAC,OAAO,EACf;YACI,OAAM;SACT;QACD,IAAI,CAAC,OAAO,GAAC,IAAI,CAAA;QACjB,IACA;YACI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAC,EAAC,QAAQ,EAAC,IAAI,EAAC,CAAC,CAAA;SAC5C;QACD,OAAM,CAAC,EACP;YACI,UAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACb,OAAO,KAAK,CAAA;SACf;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IACD,MAAM,CAAC,IAAI,EAAC,IAAW;QAEnB,IAAI,GAAG,GAAC,EAAC,GAAG,EAAC,IAAI,CAAC,GAAG,EAAC,CAAA;QACtB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAC,IAAI,CAAA;QACjB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAC,SAAS,CAAA;QAE1B,GAAG,CAAC,SAAS,CAAC,GAAC,IAAI,CAAC,OAAO,CAAA;QAC3B,GAAG,CAAC,KAAK,CAAC,GAAC,IAAI,CAAC,GAAG,CAAA;QACnB,IAAI,CAAC,OAAO,GAAC,SAAS,CAAA;QAEtB,OAAO,IAAI,CAAC,OAAO,CAAA;QACnB,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAA;QAEvB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC7B,IAAI,MAAM;YACN,MAAM,KAAK,CAAC,MAAM,CAAC,CAAA;QACvB,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;QAC/C,OAAO,UAAU,CAAA;IACrB,CAAC;IACD,MAAM,CAAC,IAAI,EAAC,IAAW;QAEnB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACtC,IAAG,CAAC,IAAI,EACR;YACI,UAAI,CAAC,IAAI,CAAC,2BAA2B,GAAC,IAAI,GAAC,GAAG,CAAC,CAAA;YAC/C,OAAO,IAAI,CAAA;SACd;QACD,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC/B,IAAG,CAAC,OAAO,EACX;YACI,UAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;YACrC,OAAO,IAAI,CAAA;SACd;QACD,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QACpC,IAAI,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC9B,GAAG,CAAC,GAAG,GAAC,OAAO,CAAC,GAAG,CAAA;QACnB,OAAO,GAAG,CAAA;IACd,CAAC;CACJ;AA9DD,8CA8DC"}
@@ -0,0 +1,9 @@
1
+ export declare enum EProtoType {
2
+ Json = 1,
3
+ GoogleProtoBuffer = 2
4
+ }
5
+ export interface IProtoFilter {
6
+ init(path?: string): boolean;
7
+ encode(data: any, ...params: any[]): any;
8
+ decode(data: any, ...params: any[]): any;
9
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EProtoType = void 0;
4
+ var EProtoType;
5
+ (function (EProtoType) {
6
+ EProtoType[EProtoType["Json"] = 1] = "Json";
7
+ EProtoType[EProtoType["GoogleProtoBuffer"] = 2] = "GoogleProtoBuffer";
8
+ })(EProtoType = exports.EProtoType || (exports.EProtoType = {}));
9
+ //# sourceMappingURL=IProtoFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IProtoFilter.js","sourceRoot":"","sources":["../../../../Framework/SocketServer/ProtoFilter/IProtoFilter.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAIX;AAJD,WAAY,UAAU;IAElB,2CAAM,CAAA;IACN,qEAAmB,CAAA;AACvB,CAAC,EAJW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAIrB"}
@@ -0,0 +1,6 @@
1
+ import { IProtoFilter } from './IProtoFilter';
2
+ export declare class JsonProtoFilter implements IProtoFilter {
3
+ init(path?: string): boolean;
4
+ encode(data: any): any;
5
+ decode(data: any): any;
6
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonProtoFilter = void 0;
4
+ const Core_1 = require("../../Core/Core");
5
+ const Log_1 = require("../../Logic/Log");
6
+ class JsonProtoFilter {
7
+ init(path) {
8
+ return true;
9
+ }
10
+ encode(data) {
11
+ if (!Core_1.core.isString(data)) {
12
+ data = JSON.stringify(data);
13
+ }
14
+ return data;
15
+ }
16
+ decode(data) {
17
+ try {
18
+ if (Core_1.core.isString(data)) {
19
+ data = JSON.parse(data);
20
+ }
21
+ }
22
+ catch (e) {
23
+ Log_1.GLog.error("decode json data Failed-----data=" + data);
24
+ return;
25
+ }
26
+ return data;
27
+ }
28
+ }
29
+ exports.JsonProtoFilter = JsonProtoFilter;
30
+ //# sourceMappingURL=JsonProtoFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonProtoFilter.js","sourceRoot":"","sources":["../../../../Framework/SocketServer/ProtoFilter/JsonProtoFilter.ts"],"names":[],"mappings":";;;AACA,0CAAuC;AACvC,yCAAuC;AACvC,MAAa,eAAe;IAExB,IAAI,CAAC,IAAY;QAEb,OAAO,IAAI,CAAA;IACf,CAAC;IACD,MAAM,CAAC,IAAI;QAEP,IAAG,CAAC,WAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EACvB;YACI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;SAC9B;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IACD,MAAM,CAAC,IAAI;QAEP,IACA;YACI,IAAG,WAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EACtB;gBACI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;aAC1B;SACJ;QACD,OAAM,CAAC,EACP;YACI,UAAI,CAAC,KAAK,CAAC,mCAAmC,GAAC,IAAI,CAAC,CAAA;YACpD,OAAM;SACT;QACD,OAAO,IAAI,CAAA;IACf,CAAC;CACJ;AA9BD,0CA8BC"}
@@ -0,0 +1,8 @@
1
+ import { IProtoFilter } from './IProtoFilter';
2
+ import { EProtoType } from "./IProtoFilter";
3
+ export declare let GProtoFactory: ProtoFactory;
4
+ declare class ProtoFactory {
5
+ protected _filters: Map<EProtoType, IProtoFilter>;
6
+ createFilter(type: EProtoType): IProtoFilter;
7
+ }
8
+ export {};
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GProtoFactory = void 0;
4
+ const GoogleProtoFilter_1 = require("./GoogleProtoFilter");
5
+ const JsonProtoFilter_1 = require("./JsonProtoFilter");
6
+ const IProtoFilter_1 = require("./IProtoFilter");
7
+ exports.GProtoFactory = null;
8
+ class ProtoFactory {
9
+ _filters = new Map();
10
+ createFilter(type) {
11
+ let filter = this._filters.get(type);
12
+ if (filter) {
13
+ return filter;
14
+ }
15
+ switch (type) {
16
+ case IProtoFilter_1.EProtoType.GoogleProtoBuffer:
17
+ {
18
+ filter = new GoogleProtoFilter_1.GoogleProtoFilter();
19
+ break;
20
+ }
21
+ default:
22
+ {
23
+ filter = new JsonProtoFilter_1.JsonProtoFilter();
24
+ break;
25
+ }
26
+ }
27
+ this._filters.set(type, filter);
28
+ return filter;
29
+ }
30
+ }
31
+ exports.GProtoFactory = new ProtoFactory();
32
+ //# sourceMappingURL=ProtoFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProtoFactory.js","sourceRoot":"","sources":["../../../../Framework/SocketServer/ProtoFilter/ProtoFactory.ts"],"names":[],"mappings":";;;AAAA,2DAAwD;AACxD,uDAAoD;AAEpD,iDAA4C;AAEjC,QAAA,aAAa,GAAc,IAAI,CAAA;AAC1C,MAAM,YAAY;IAEJ,QAAQ,GAAC,IAAI,GAAG,EAA2B,CAAA;IACrD,YAAY,CAAC,IAAe;QAExB,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACpC,IAAG,MAAM,EACT;YACI,OAAO,MAAM,CAAA;SAChB;QACD,QAAO,IAAI,EACX;YACI,KAAK,yBAAU,CAAC,iBAAiB;gBACjC;oBACI,MAAM,GAAG,IAAI,qCAAiB,EAAE,CAAA;oBAChC,MAAK;iBACR;YACD;gBACA;oBACI,MAAM,GAAG,IAAI,iCAAe,EAAE,CAAA;oBAC9B,MAAK;iBACR;SACJ;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAC,MAAM,CAAC,CAAA;QAC9B,OAAO,MAAM,CAAA;IACjB,CAAC;CACJ;AACD,qBAAa,GAAC,IAAI,YAAY,EAAE,CAAA"}