cgserver 8.6.8 → 8.6.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/lib/Framework/AI/AiObject.js +10 -10
- package/dist/lib/Framework/AI/Astar.js +133 -133
- package/dist/lib/Framework/AI/BehaviorAI.js +307 -307
- package/dist/lib/Framework/AI/Entity.js +33 -33
- package/dist/lib/Framework/AI/Point.js +68 -68
- package/dist/lib/Framework/AI/TriggerMgr.js +201 -201
- package/dist/lib/Framework/Config/Config.js +53 -53
- package/dist/lib/Framework/Config/DbConfig.js +14 -0
- package/dist/lib/Framework/Config/FrameworkConfig.js +207 -240
- package/dist/lib/Framework/Config/IServerConfig.js +26 -26
- package/dist/lib/Framework/Config/_error_.js +35 -35
- package/dist/lib/Framework/Core/Core.js +639 -639
- package/dist/lib/Framework/Core/Timer.js +116 -116
- package/dist/lib/Framework/Database/Decorator/AutoIncrement.js +11 -11
- package/dist/lib/Framework/Database/Decorator/DBCache.js +64 -64
- package/dist/lib/Framework/Database/Decorator/NotNull.js +11 -11
- package/dist/lib/Framework/Database/Decorator/PrimaryKey.js +11 -11
- package/dist/lib/Framework/Database/Decorator/Property.js +61 -61
- package/dist/lib/Framework/Database/Decorator/Table.js +15 -15
- package/dist/lib/Framework/Database/Decorator/Type.js +20 -20
- package/dist/lib/Framework/Database/MSSqlManager.js +53 -43
- package/dist/lib/Framework/Database/MongoBaseService.js +117 -117
- package/dist/lib/Framework/Database/MongoManager.js +462 -462
- package/dist/lib/Framework/Database/MysqlBaseService.js +281 -281
- package/dist/lib/Framework/Database/MysqlManager.js +179 -180
- package/dist/lib/Framework/Database/RedisManager.js +61 -53
- package/dist/lib/Framework/Decorator/AdminValidate.js +19 -19
- package/dist/lib/Framework/Decorator/AuthorityValidate.js +22 -22
- package/dist/lib/Framework/Decorator/CreatorValidate.js +19 -19
- package/dist/lib/Framework/Decorator/JsonAdminValidate.js +15 -15
- package/dist/lib/Framework/Decorator/JsonAuthorityValidate.js +20 -20
- package/dist/lib/Framework/Decorator/JsonCreatorValidate.js +19 -19
- package/dist/lib/Framework/Decorator/SyncCall.js +42 -42
- package/dist/lib/Framework/Decorator/SyncCallServer.js +77 -77
- package/dist/lib/Framework/Logic/CacheTool.js +73 -73
- package/dist/lib/Framework/Logic/EventTool.js +27 -27
- package/dist/lib/Framework/Logic/HttpTool.js +75 -75
- package/dist/lib/Framework/Logic/Log.js +140 -140
- package/dist/lib/Framework/Logic/SyncQueueTool.js +43 -43
- package/dist/lib/Framework/Service/MongoAccountService.js +367 -367
- package/dist/lib/Framework/Service/MongoCacheService.js +42 -42
- package/dist/lib/Framework/Service/MongoUserService.js +100 -100
- package/dist/lib/Framework/Service/MysqlAccountService.js +441 -441
- package/dist/lib/Framework/Service/MysqlUserService.js +171 -171
- package/dist/lib/Framework/Service/ini.js +36 -36
- package/dist/lib/Framework/SocketServer/IClientWebSocket.js +44 -44
- package/dist/lib/Framework/SocketServer/IRpc.js +12 -12
- package/dist/lib/Framework/SocketServer/IRpcClientWebSocket.js +63 -63
- package/dist/lib/Framework/SocketServer/IRpcServerWebSocket.js +63 -63
- package/dist/lib/Framework/SocketServer/IServerWebSocket.js +75 -75
- package/dist/lib/Framework/SocketServer/ISocketServer.js +205 -202
- package/dist/lib/Framework/SocketServer/IWebSocket.js +195 -195
- package/dist/lib/Framework/SocketServer/ProtoFilter/GoogleProtoFilter.js +57 -57
- package/dist/lib/Framework/SocketServer/ProtoFilter/IProtoFilter.js +8 -8
- package/dist/lib/Framework/SocketServer/ProtoFilter/JsonProtoFilter.js +29 -29
- package/dist/lib/Framework/SocketServer/ProtoFilter/ProtoFactory.js +31 -31
- package/dist/lib/Framework/ThirdParty/AlipayTool.js +203 -203
- package/dist/lib/Framework/ThirdParty/Alisms.js +46 -46
- package/dist/lib/Framework/ThirdParty/AppleTool.js +234 -234
- package/dist/lib/Framework/ThirdParty/CgMq.js +132 -132
- package/dist/lib/Framework/ThirdParty/EmailTool.js +33 -33
- package/dist/lib/Framework/ThirdParty/OpenSocial.js +32 -32
- package/dist/lib/Framework/ThirdParty/QQTool.js +118 -118
- package/dist/lib/Framework/ThirdParty/QiniuTool.js +21 -21
- package/dist/lib/Framework/ThirdParty/Rpc.js +63 -63
- package/dist/lib/Framework/ThirdParty/WechatOATool.js +61 -61
- package/dist/lib/Framework/ThirdParty/WechatTool.js +74 -74
- package/dist/lib/Framework/WebServer/Controller/BaseController.js +112 -112
- package/dist/lib/Framework/WebServer/Controller/MongoBaseUserController.js +169 -169
- package/dist/lib/Framework/WebServer/Controller/MysqlBaseUserController.js +169 -169
- package/dist/lib/Framework/WebServer/Engine/ControllerManager.js +112 -112
- package/dist/lib/Framework/WebServer/Engine/Engine.js +152 -152
- package/dist/lib/Framework/WebServer/Engine/RazorJs.js +544 -544
- package/dist/lib/Framework/WebServer/Engine/Request.js +237 -237
- package/dist/lib/Framework/WebServer/Engine/Response.js +100 -100
- package/dist/lib/Framework/WebServer/IWebServer.js +59 -54
- package/dist/lib/Framework/cgserver.js +121 -111
- package/dist/lib/Framework/index.js +201 -191
- package/dist/lib/test/test.js +21 -21
- package/dist/types/Framework/AI/AiObject.d.ts +5 -5
- package/dist/types/Framework/AI/Astar.d.ts +38 -38
- package/dist/types/Framework/AI/BehaviorAI.d.ts +24 -24
- package/dist/types/Framework/AI/Entity.d.ts +12 -12
- package/dist/types/Framework/AI/Point.d.ts +17 -17
- package/dist/types/Framework/AI/TriggerMgr.d.ts +52 -52
- package/dist/types/Framework/Config/Config.d.ts +12 -12
- package/dist/types/Framework/Config/DbConfig.d.ts +10 -0
- package/dist/types/Framework/Config/FrameworkConfig.d.ts +203 -228
- package/dist/types/Framework/Config/IServerConfig.d.ts +9 -9
- package/dist/types/Framework/Config/_error_.d.ts +99 -99
- package/dist/types/Framework/Core/Core.d.ts +108 -108
- package/dist/types/Framework/Core/Timer.d.ts +16 -16
- package/dist/types/Framework/Database/Decorator/AutoIncrement.d.ts +1 -1
- package/dist/types/Framework/Database/Decorator/DBCache.d.ts +23 -23
- package/dist/types/Framework/Database/Decorator/NotNull.d.ts +1 -1
- package/dist/types/Framework/Database/Decorator/PrimaryKey.d.ts +1 -1
- package/dist/types/Framework/Database/Decorator/Property.d.ts +57 -57
- package/dist/types/Framework/Database/Decorator/Table.d.ts +1 -1
- package/dist/types/Framework/Database/Decorator/Type.d.ts +1 -1
- package/dist/types/Framework/Database/MSSqlManager.d.ts +27 -17
- package/dist/types/Framework/Database/MongoBaseService.d.ts +81 -81
- package/dist/types/Framework/Database/MongoManager.d.ts +156 -156
- package/dist/types/Framework/Database/MysqlBaseService.d.ts +34 -34
- package/dist/types/Framework/Database/MysqlManager.d.ts +53 -41
- package/dist/types/Framework/Database/RedisManager.d.ts +24 -17
- package/dist/types/Framework/Decorator/AdminValidate.d.ts +1 -1
- package/dist/types/Framework/Decorator/AuthorityValidate.d.ts +2 -2
- package/dist/types/Framework/Decorator/CreatorValidate.d.ts +1 -1
- package/dist/types/Framework/Decorator/JsonAdminValidate.d.ts +1 -1
- package/dist/types/Framework/Decorator/JsonAuthorityValidate.d.ts +2 -2
- package/dist/types/Framework/Decorator/JsonCreatorValidate.d.ts +1 -1
- package/dist/types/Framework/Decorator/SyncCall.d.ts +12 -12
- package/dist/types/Framework/Decorator/SyncCallServer.d.ts +14 -14
- package/dist/types/Framework/Logic/CacheTool.d.ts +27 -27
- package/dist/types/Framework/Logic/EventTool.d.ts +13 -13
- package/dist/types/Framework/Logic/HttpTool.d.ts +15 -15
- package/dist/types/Framework/Logic/Log.d.ts +25 -25
- package/dist/types/Framework/Logic/SyncQueueTool.d.ts +21 -21
- package/dist/types/Framework/Service/MongoAccountService.d.ts +69 -69
- package/dist/types/Framework/Service/MongoCacheService.d.ts +14 -14
- package/dist/types/Framework/Service/MongoUserService.d.ts +35 -35
- package/dist/types/Framework/Service/MysqlAccountService.d.ts +74 -74
- package/dist/types/Framework/Service/MysqlUserService.d.ts +33 -33
- package/dist/types/Framework/Service/ini.d.ts +29 -29
- package/dist/types/Framework/SocketServer/IClientWebSocket.d.ts +17 -17
- package/dist/types/Framework/SocketServer/IRpc.d.ts +8 -8
- package/dist/types/Framework/SocketServer/IRpcClientWebSocket.d.ts +16 -16
- package/dist/types/Framework/SocketServer/IRpcServerWebSocket.d.ts +16 -16
- package/dist/types/Framework/SocketServer/IServerWebSocket.d.ts +28 -28
- package/dist/types/Framework/SocketServer/ISocketServer.d.ts +45 -45
- package/dist/types/Framework/SocketServer/IWebSocket.d.ts +60 -60
- package/dist/types/Framework/SocketServer/ProtoFilter/GoogleProtoFilter.d.ts +9 -9
- package/dist/types/Framework/SocketServer/ProtoFilter/IProtoFilter.d.ts +9 -9
- package/dist/types/Framework/SocketServer/ProtoFilter/JsonProtoFilter.d.ts +6 -6
- package/dist/types/Framework/SocketServer/ProtoFilter/ProtoFactory.d.ts +8 -8
- package/dist/types/Framework/ThirdParty/AlipayTool.d.ts +109 -109
- package/dist/types/Framework/ThirdParty/Alisms.d.ts +14 -14
- package/dist/types/Framework/ThirdParty/AppleTool.d.ts +131 -131
- package/dist/types/Framework/ThirdParty/CgMq.d.ts +51 -51
- package/dist/types/Framework/ThirdParty/EmailTool.d.ts +5 -5
- package/dist/types/Framework/ThirdParty/OpenSocial.d.ts +7 -7
- package/dist/types/Framework/ThirdParty/QQTool.d.ts +41 -41
- package/dist/types/Framework/ThirdParty/QiniuTool.d.ts +6 -6
- package/dist/types/Framework/ThirdParty/Rpc.d.ts +20 -20
- package/dist/types/Framework/ThirdParty/WechatOATool.d.ts +13 -13
- package/dist/types/Framework/ThirdParty/WechatTool.d.ts +20 -20
- package/dist/types/Framework/WebServer/Controller/BaseController.d.ts +33 -33
- package/dist/types/Framework/WebServer/Controller/MongoBaseUserController.d.ts +27 -27
- package/dist/types/Framework/WebServer/Controller/MysqlBaseUserController.d.ts +27 -27
- package/dist/types/Framework/WebServer/Engine/ControllerManager.d.ts +35 -35
- package/dist/types/Framework/WebServer/Engine/Engine.d.ts +21 -21
- package/dist/types/Framework/WebServer/Engine/RazorJs.d.ts +21 -21
- package/dist/types/Framework/WebServer/Engine/Request.d.ts +35 -35
- package/dist/types/Framework/WebServer/Engine/Response.d.ts +30 -30
- package/dist/types/Framework/WebServer/IWebServer.d.ts +20 -20
- package/dist/types/Framework/cgserver.d.ts +27 -25
- package/dist/types/Framework/index.d.ts +91 -86
- package/dist/types/test/test.d.ts +1 -1
- package/package.json +29 -32
|
@@ -1,202 +1,205 @@
|
|
|
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 MongoManager_1 = require("../Database/MongoManager");
|
|
12
|
-
const MSSqlManager_1 = require("../Database/MSSqlManager");
|
|
13
|
-
const EventTool_1 = require("../Logic/EventTool");
|
|
14
|
-
const IServerConfig_1 = require("../Config/IServerConfig");
|
|
15
|
-
const cgserver_1 = require("../cgserver");
|
|
16
|
-
class ISocketServer {
|
|
17
|
-
_cfg = null;
|
|
18
|
-
//方便提示
|
|
19
|
-
get cfg() {
|
|
20
|
-
return this._cfg;
|
|
21
|
-
}
|
|
22
|
-
//服务器已被关闭
|
|
23
|
-
_is_closed = false;
|
|
24
|
-
get isClosed() {
|
|
25
|
-
return this._is_closed;
|
|
26
|
-
}
|
|
27
|
-
get name() {
|
|
28
|
-
return this._cfg.serverName;
|
|
29
|
-
}
|
|
30
|
-
//监听websocket
|
|
31
|
-
_listening_websocket = null;
|
|
32
|
-
get listeningWebSocket() {
|
|
33
|
-
return this._listening_websocket;
|
|
34
|
-
}
|
|
35
|
-
//来自于用户的链接
|
|
36
|
-
_ws_clients = {};
|
|
37
|
-
get listenPort() {
|
|
38
|
-
return this._cfg.port;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* websocket can accepted protocol
|
|
42
|
-
*/
|
|
43
|
-
_accepted_protocol = null;
|
|
44
|
-
//服务器管理相关
|
|
45
|
-
/*
|
|
46
|
-
item=servername:class
|
|
47
|
-
*/
|
|
48
|
-
_name_vs_class = {};
|
|
49
|
-
registerWebSocketHandleClass(name, cls) {
|
|
50
|
-
if (!name || name == "") {
|
|
51
|
-
throw "registerWebSocketHandleClass name must be not null or empty!";
|
|
52
|
-
}
|
|
53
|
-
this._name_vs_class[name] = cls;
|
|
54
|
-
}
|
|
55
|
-
constructor(cfg) {
|
|
56
|
-
this._cfg = cfg;
|
|
57
|
-
}
|
|
58
|
-
removeServerWebSocketBySocketId(socketId) {
|
|
59
|
-
this._ws_clients[socketId] = null;
|
|
60
|
-
delete this._ws_clients[socketId];
|
|
61
|
-
}
|
|
62
|
-
async run() {
|
|
63
|
-
cgserver_1.GCgServer.addSocketServer(this);
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
this.
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
//
|
|
113
|
-
//
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
}
|
|
202
|
-
|
|
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 MongoManager_1 = require("../Database/MongoManager");
|
|
12
|
+
const MSSqlManager_1 = require("../Database/MSSqlManager");
|
|
13
|
+
const EventTool_1 = require("../Logic/EventTool");
|
|
14
|
+
const IServerConfig_1 = require("../Config/IServerConfig");
|
|
15
|
+
const cgserver_1 = require("../cgserver");
|
|
16
|
+
class ISocketServer {
|
|
17
|
+
_cfg = null;
|
|
18
|
+
//方便提示
|
|
19
|
+
get cfg() {
|
|
20
|
+
return this._cfg;
|
|
21
|
+
}
|
|
22
|
+
//服务器已被关闭
|
|
23
|
+
_is_closed = false;
|
|
24
|
+
get isClosed() {
|
|
25
|
+
return this._is_closed;
|
|
26
|
+
}
|
|
27
|
+
get name() {
|
|
28
|
+
return this._cfg.serverName;
|
|
29
|
+
}
|
|
30
|
+
//监听websocket
|
|
31
|
+
_listening_websocket = null;
|
|
32
|
+
get listeningWebSocket() {
|
|
33
|
+
return this._listening_websocket;
|
|
34
|
+
}
|
|
35
|
+
//来自于用户的链接
|
|
36
|
+
_ws_clients = {};
|
|
37
|
+
get listenPort() {
|
|
38
|
+
return this._cfg.port;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* websocket can accepted protocol
|
|
42
|
+
*/
|
|
43
|
+
_accepted_protocol = null;
|
|
44
|
+
//服务器管理相关
|
|
45
|
+
/*
|
|
46
|
+
item=servername:class
|
|
47
|
+
*/
|
|
48
|
+
_name_vs_class = {};
|
|
49
|
+
registerWebSocketHandleClass(name, cls) {
|
|
50
|
+
if (!name || name == "") {
|
|
51
|
+
throw "registerWebSocketHandleClass name must be not null or empty!";
|
|
52
|
+
}
|
|
53
|
+
this._name_vs_class[name] = cls;
|
|
54
|
+
}
|
|
55
|
+
constructor(cfg) {
|
|
56
|
+
this._cfg = cfg;
|
|
57
|
+
}
|
|
58
|
+
removeServerWebSocketBySocketId(socketId) {
|
|
59
|
+
this._ws_clients[socketId] = null;
|
|
60
|
+
delete this._ws_clients[socketId];
|
|
61
|
+
}
|
|
62
|
+
async run() {
|
|
63
|
+
cgserver_1.GCgServer.addSocketServer(this);
|
|
64
|
+
let dbcfg = IServerConfig_1.GServerCfg.db;
|
|
65
|
+
if (dbcfg) {
|
|
66
|
+
await RedisManager_1.GRedisMgr.init(dbcfg.redis);
|
|
67
|
+
await MysqlManager_1.GMysqlMgr.init(dbcfg.mysql);
|
|
68
|
+
await MSSqlManager_1.GMSSqlMgr.init(dbcfg.mssql);
|
|
69
|
+
await MongoManager_1.GMongoMgr.init(dbcfg.mongo);
|
|
70
|
+
}
|
|
71
|
+
this.initWebSocket();
|
|
72
|
+
}
|
|
73
|
+
stop() {
|
|
74
|
+
this._is_closed = true;
|
|
75
|
+
this._listening_websocket.closeAllConnections();
|
|
76
|
+
}
|
|
77
|
+
/*
|
|
78
|
+
把所有的客户端链接保存起来
|
|
79
|
+
方便统计,广播等
|
|
80
|
+
*/
|
|
81
|
+
addClient(ws_client) {
|
|
82
|
+
this._ws_clients[ws_client.socketId] = ws_client;
|
|
83
|
+
}
|
|
84
|
+
isOriginAllowed(origin) {
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
initWebSocket(wss) {
|
|
88
|
+
let server = null;
|
|
89
|
+
if (wss) {
|
|
90
|
+
console.log("wss:---");
|
|
91
|
+
let options = {
|
|
92
|
+
key: fs.readFileSync("ssl/ssl2.key"),
|
|
93
|
+
cert: fs.readFileSync("ssl/ssl2.crt"),
|
|
94
|
+
//passphrase:'1234'//如果秘钥文件有密码的话,用这个属性设置密码
|
|
95
|
+
};
|
|
96
|
+
server = https.createServer(options, (request, response) => {
|
|
97
|
+
Log_1.GLog.info((new Date()) + 'wss Received request for ' + request.url);
|
|
98
|
+
response.writeHead(404);
|
|
99
|
+
response.end();
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
server = http.createServer((request, response) => {
|
|
104
|
+
Log_1.GLog.info((new Date()) + 'ws Received request for ' + request.url);
|
|
105
|
+
response.writeHead(404);
|
|
106
|
+
response.end();
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
server.listen(this._cfg.port, this.onListenning.bind(this));
|
|
110
|
+
this._listening_websocket = new ws.server({
|
|
111
|
+
httpServer: server,
|
|
112
|
+
// You should not use autoAcceptConnections for production
|
|
113
|
+
// applications, as it defeats all standard cross-origin protection
|
|
114
|
+
// facilities built into the protocol and the browser. You should
|
|
115
|
+
// *always* verify the connection's origin and decide whether or not
|
|
116
|
+
// to accept it.
|
|
117
|
+
autoAcceptConnections: false
|
|
118
|
+
});
|
|
119
|
+
this._listening_websocket.on('request', this.onRequest.bind(this));
|
|
120
|
+
this._listening_websocket.on('close', this.onClose.bind(this));
|
|
121
|
+
}
|
|
122
|
+
onClose(connection, reason, desc) {
|
|
123
|
+
}
|
|
124
|
+
onListenning() {
|
|
125
|
+
EventTool_1.GEventTool.emit("socket_server_init_done");
|
|
126
|
+
let info = (new Date()) + " Server " + this.name + " is listening on port " + this._cfg.port;
|
|
127
|
+
Log_1.GLog.info(info);
|
|
128
|
+
console.log(info);
|
|
129
|
+
}
|
|
130
|
+
onRequest(req) {
|
|
131
|
+
if (this._is_closed) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
let protocol = null;
|
|
135
|
+
if (req.requestedProtocols.length > 0) {
|
|
136
|
+
protocol = req.requestedProtocols[0];
|
|
137
|
+
}
|
|
138
|
+
let allowed = this.isOriginAllowed(req.origin);
|
|
139
|
+
if (!allowed) {
|
|
140
|
+
req.reject();
|
|
141
|
+
Log_1.GLog.info(' Connection from origin ' + req.origin + ' rejected.');
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
try {
|
|
145
|
+
let conn = req.accept(this._accepted_protocol, req.origin);
|
|
146
|
+
if (!conn) {
|
|
147
|
+
Log_1.GLog.info(' protocol reject');
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
Log_1.GLog.info((new Date()) + ' Connection accepted.');
|
|
151
|
+
let server_name = this._getServerNameByCookies(req.cookies);
|
|
152
|
+
this.createWebSocketObjectByProtocol(server_name, conn);
|
|
153
|
+
}
|
|
154
|
+
catch (e) {
|
|
155
|
+
Log_1.GLog.info(' protocol reject');
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
createWebSocketObjectByProtocol(server_name, _ws) {
|
|
159
|
+
server_name = server_name || "default";
|
|
160
|
+
let cls = this._name_vs_class[server_name];
|
|
161
|
+
if (!cls) {
|
|
162
|
+
Log_1.GLog.error("(createWebSocketObjectByProtocol in server(" + this.name + "))no this websocket handle class=" + server_name);
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
let ws_server = (new cls(this));
|
|
166
|
+
this.addClient(ws_server);
|
|
167
|
+
ws_server.onConnect(_ws);
|
|
168
|
+
return ws_server;
|
|
169
|
+
}
|
|
170
|
+
_getServerNameByCookies(cookies) {
|
|
171
|
+
let server_name = "";
|
|
172
|
+
if (!cookies) {
|
|
173
|
+
return server_name;
|
|
174
|
+
}
|
|
175
|
+
for (let index in cookies) {
|
|
176
|
+
let cookie = cookies[index];
|
|
177
|
+
if (cookie.name == "server") {
|
|
178
|
+
server_name = cookie.value;
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return server_name;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* 广播消息
|
|
186
|
+
* @param msg
|
|
187
|
+
*/
|
|
188
|
+
broadCast(msg) {
|
|
189
|
+
for (var key in this._ws_clients) {
|
|
190
|
+
let ws = this._ws_clients[key];
|
|
191
|
+
ws.send(msg);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* 获取任意客户端连接
|
|
196
|
+
* @returns
|
|
197
|
+
*/
|
|
198
|
+
getAnyWebSocket() {
|
|
199
|
+
for (var key in this._ws_clients) {
|
|
200
|
+
return this._ws_clients[key];
|
|
201
|
+
}
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
exports.ISocketServer = ISocketServer;
|