knight-server 1.0.9 → 1.0.11
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/module/websocket/WebSocketModule.js +1 -1
- package/module/websocket/WebSocketModule.js.map +1 -1
- package/module/websocket/WebSocketRouter.d.ts +6 -0
- package/module/websocket/WebSocketRouter.d.ts.map +1 -1
- package/module/websocket/WebSocketRouter.js +19 -1
- package/module/websocket/WebSocketRouter.js.map +1 -1
- package/package.json +1 -1
|
@@ -82,7 +82,7 @@ class WebSocketModule extends base_1.AbstarctModule {
|
|
|
82
82
|
}
|
|
83
83
|
const router = new type(this.server, path);
|
|
84
84
|
this.routers.set(path, router);
|
|
85
|
-
this.log(
|
|
85
|
+
this.log(`路由注册 ${name} - ${path}`);
|
|
86
86
|
return router;
|
|
87
87
|
}
|
|
88
88
|
OnDegistRouter(path) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebSocketModule.js","sourceRoot":"","sources":["../../../src/module/websocket/WebSocketModule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,gDAA6C;AAC7C,uCAAyB;AACzB,qCAAuE;AACvE,uDAAoD;AAGpD,kBAAkB;AAClB,MAAa,eAAgB,SAAQ,qBAAgD;IAQjF,WAAW;IACX,YAAmB,MAAc,EAAE,OAAgB;QAE/C,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3B,CAAC;IACM,KAAK,CAAC,OAAO,CAAC,MAAuB;QAExC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,cAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,eAAe,GAAG,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,eAAe,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,OAAO;QACP,MAAM,cAAc,GAAG,oBAAa,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,YAAY,iCAAe,CAAC,CAAC;QAChH,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE,CAAC;YAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAAC,CAAC;IACjF,CAAC;IACM,KAAK,CAAC,MAAM;QAEf,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IACM,SAAS;QAEZ,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IACM,cAAc,CAAC,UAAsB;QAExC,IAAI,IAAI,IAAI,UAAU,EAAE,CAAC;YAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QACjE,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAC7B,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAC7B,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAClC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QAC7E,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAoB,CAAC;QAC9D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"WebSocketModule.js","sourceRoot":"","sources":["../../../src/module/websocket/WebSocketModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@ import { Server } from "../../Server";
|
|
|
7
7
|
export declare abstract class WebSocketRouter extends AbstractRouter {
|
|
8
8
|
/** 客户端池 */
|
|
9
9
|
private readonly clients;
|
|
10
|
+
/** 检测计时器 */
|
|
11
|
+
private chectTimer;
|
|
10
12
|
/** 构造函数 */
|
|
11
13
|
constructor(server: Server, path: string);
|
|
12
14
|
/** 逻辑处理 */
|
|
@@ -21,6 +23,10 @@ export declare abstract class WebSocketRouter extends AbstractRouter {
|
|
|
21
23
|
OnGetClient(key: string): WebSocketClient;
|
|
22
24
|
/** 获取所有客户端 */
|
|
23
25
|
OnGetClients(): Array<WebSocketClient>;
|
|
26
|
+
/** 启动检测计时器 */
|
|
27
|
+
private OnStartCheckTimer;
|
|
28
|
+
/** 停止检测计时器 */
|
|
29
|
+
private OnStopCheckTimer;
|
|
24
30
|
/** 鉴权处理 */
|
|
25
31
|
abstract OnCheck(server: Server, url: URL): Promise<boolean>;
|
|
26
32
|
/** 连接 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebSocketRouter.d.ts","sourceRoot":"","sources":["../../../src/module/websocket/WebSocketRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,wBAAwB;AACxB,8BAAsB,eAAgB,SAAQ,cAAc;IAExD,WAAW;IACX,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;
|
|
1
|
+
{"version":3,"file":"WebSocketRouter.d.ts","sourceRoot":"","sources":["../../../src/module/websocket/WebSocketRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,wBAAwB;AACxB,8BAAsB,eAAgB,SAAQ,cAAc;IAExD,WAAW;IACX,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,YAAY;IACZ,OAAO,CAAC,UAAU,CAAiB;IAEnC,WAAW;gBACQ,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAO/C,WAAW;IACE,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBxF,YAAY;IACZ,OAAO,CAAC,WAAW;IAKnB,YAAY;IACL,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAK3C,cAAc;IACP,iBAAiB,IAAI,IAAI;IAKhC,YAAY;IACL,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe;IAIhD,cAAc;IACP,YAAY,IAAI,KAAK,CAAC,eAAe,CAAC;IAI7C,cAAc;IACd,OAAO,CAAC,iBAAiB;IAQzB,cAAc;IACd,OAAO,CAAC,gBAAgB;IAKxB,WAAW;aACK,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IACnE,SAAS;aACO,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IACjF,SAAS;aACO,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IACpF,SAAS;aACO,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACxF,SAAS,IAAI,IAAI;CAO3B"}
|
|
@@ -10,6 +10,7 @@ class WebSocketRouter extends base_1.AbstractRouter {
|
|
|
10
10
|
constructor(server, path) {
|
|
11
11
|
super(server, path);
|
|
12
12
|
this.clients = new Map();
|
|
13
|
+
this.OnStartCheckTimer();
|
|
13
14
|
}
|
|
14
15
|
/** 逻辑处理 */
|
|
15
16
|
async OnHandler(websocket, request) {
|
|
@@ -25,7 +26,7 @@ class WebSocketRouter extends base_1.AbstractRouter {
|
|
|
25
26
|
}
|
|
26
27
|
// 鉴权处理
|
|
27
28
|
const host = request.headers.host || 'localhost';
|
|
28
|
-
const url = new URL(request.url || '', `
|
|
29
|
+
const url = new URL(request.url || '', `ws://${host}`);
|
|
29
30
|
const check = await this.OnCheck(this.server, url);
|
|
30
31
|
if (!check) {
|
|
31
32
|
websocket.close(utility_1.NetworkUtility.ResponseCode.BAD_REQUEST, "鉴权处理失败,参数有误!");
|
|
@@ -62,9 +63,26 @@ class WebSocketRouter extends base_1.AbstractRouter {
|
|
|
62
63
|
OnGetClients() {
|
|
63
64
|
return Array.from(this.clients.values());
|
|
64
65
|
}
|
|
66
|
+
/** 启动检测计时器 */
|
|
67
|
+
OnStartCheckTimer() {
|
|
68
|
+
this.chectTimer = setInterval(() => {
|
|
69
|
+
if (0 < this.clients.size) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this.server.websocket.OnDegistRouter(this.path);
|
|
73
|
+
}, 90000);
|
|
74
|
+
}
|
|
75
|
+
/** 停止检测计时器 */
|
|
76
|
+
OnStopCheckTimer() {
|
|
77
|
+
if (null == this.chectTimer) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
clearInterval(this.chectTimer);
|
|
81
|
+
}
|
|
65
82
|
OnDestroy() {
|
|
66
83
|
super.OnDestroy();
|
|
67
84
|
this.OnRemoveAllClient();
|
|
85
|
+
this.OnStopCheckTimer();
|
|
68
86
|
}
|
|
69
87
|
}
|
|
70
88
|
exports.WebSocketRouter = WebSocketRouter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebSocketRouter.js","sourceRoot":"","sources":["../../../src/module/websocket/WebSocketRouter.ts"],"names":[],"mappings":";;;AAEA,qCAA4C;AAC5C,uDAAoD;AACpD,2CAA8D;AAG9D,wBAAwB;AACxB,MAAsB,eAAgB,SAAQ,qBAAc;
|
|
1
|
+
{"version":3,"file":"WebSocketRouter.js","sourceRoot":"","sources":["../../../src/module/websocket/WebSocketRouter.ts"],"names":[],"mappings":";;;AAEA,qCAA4C;AAC5C,uDAAoD;AACpD,2CAA8D;AAG9D,wBAAwB;AACxB,MAAsB,eAAgB,SAAQ,qBAAc;IAOxD,WAAW;IACX,YAAmB,MAAc,EAAE,IAAY;QAE3C,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAC;QAClD,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC7B,CAAC;IAED,WAAW;IACJ,KAAK,CAAC,SAAS,CAAC,SAAuB,EAAE,OAAwB;QAEpE,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QACrD,SAAS;QACT,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC3E,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EACzB,CAAC;YACG,SAAS,CAAC,KAAK,CAAC,wBAAc,CAAC,YAAY,CAAC,QAAQ,EAAE,WAAW,GAAG,KAAK,CAAC,CAAC;YAC3E,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;YACnC,OAAO;QACX,CAAC;QACD,OAAO;QACP,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,EACV,CAAC;YACG,SAAS,CAAC,KAAK,CAAC,wBAAc,CAAC,YAAY,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YACzE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAC9B,OAAO;QACX,CAAC;QACD,QAAQ;QACR,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IACD,YAAY;IACJ,WAAW,CAAC,GAAW,EAAE,GAAQ,EAAE,SAAuB,EAAE,OAAwB;QAExF,MAAM,MAAM,GAAG,IAAI,iCAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACpF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IACD,YAAY;IACL,cAAc,CAAC,GAAW;QAE7B,IAAI,uBAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;QACzE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IACD,cAAc;IACP,iBAAiB;QAEpB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAAC,CAAC;QACjE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IACD,YAAY;IACL,WAAW,CAAC,GAAW;QAE1B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IACD,cAAc;IACP,YAAY;QAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,cAAc;IACN,iBAAiB;QAErB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YAE/B,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAAC,OAAO;YAAC,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC,EAAE,KAAK,CAAC,CAAC;IACd,CAAC;IACD,cAAc;IACN,gBAAgB;QAEpB,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QACxC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IASM,SAAS;QAEZ,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;CAEJ;AAlGD,0CAkGC"}
|