@lsby/net-core 0.7.24 → 0.7.25
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/dist/cjs/global/global.cjs +19 -0
- package/dist/cjs/global/global.d.cts +2 -0
- package/dist/cjs/index.cjs +23 -4
- package/dist/cjs/plugin/extend/custom-data.cjs +19 -0
- package/dist/cjs/plugin/extend/urlencoded.cjs +19 -0
- package/dist/cjs/plugin/extend/web-socket.cjs +21 -2
- package/dist/cjs/server/server.cjs +21 -2
- package/dist/esm/{chunk-5JL432N6.js → chunk-CGLDW3PN.js} +1 -1
- package/dist/esm/{chunk-FDR5G37J.js → chunk-GEQKQOFV.js} +1 -1
- package/dist/esm/{chunk-YITJBWMM.js → chunk-SWPAN4RD.js} +1 -1
- package/dist/esm/{chunk-VFOG5LBT.js → chunk-VNRSKOGV.js} +1 -1
- package/dist/esm/{chunk-BFL3HOQE.js → chunk-VTVWF3IE.js} +19 -0
- package/dist/esm/global/global.d.ts +2 -0
- package/dist/esm/global/global.js +1 -1
- package/dist/esm/index.js +5 -5
- package/dist/esm/plugin/extend/custom-data.js +2 -2
- package/dist/esm/plugin/extend/urlencoded.js +2 -2
- package/dist/esm/plugin/extend/web-socket.js +2 -2
- package/dist/esm/server/server.js +2 -2
- package/package.json +1 -1
|
@@ -26,13 +26,20 @@ __export(global_exports, {
|
|
|
26
26
|
module.exports = __toCommonJS(global_exports);
|
|
27
27
|
var import_ts_global = require("@lsby/ts-global");
|
|
28
28
|
var import_ts_log = require("@lsby/ts-log");
|
|
29
|
+
var import_ws = require("ws");
|
|
29
30
|
var log = new import_ts_log.Log("@lsby:net-core");
|
|
30
31
|
var WebSocket\u7BA1\u7406\u5668 = class {
|
|
31
32
|
constructor(\u8FDE\u63A5\u8868) {
|
|
32
33
|
this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
|
|
34
|
+
this.\u5B9A\u65F6\u5668ID = setInterval(() => {
|
|
35
|
+
this.\u6E05\u7406\u65E0\u6548\u8FDE\u63A5().catch((err) => {
|
|
36
|
+
this.log.errorSync(`\u6E05\u7406\u65E0\u6548\u8FDE\u63A5\u5931\u8D25: ${err}`);
|
|
37
|
+
});
|
|
38
|
+
}, 3e4);
|
|
33
39
|
}
|
|
34
40
|
log = log.extend("@lsby:net-core").extend("WebSocket\u7BA1\u7406\u5668");
|
|
35
41
|
\u6E05\u7406\u51FD\u6570\u8868 = {};
|
|
42
|
+
\u5B9A\u65F6\u5668ID = null;
|
|
36
43
|
\u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
|
|
37
44
|
this.\u8FDE\u63A5\u8868[id] = ws\u53E5\u67C4;
|
|
38
45
|
}
|
|
@@ -57,6 +64,18 @@ var WebSocket\u7BA1\u7406\u5668 = class {
|
|
|
57
64
|
delete this.\u8FDE\u63A5\u8868[id];
|
|
58
65
|
delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
59
66
|
}
|
|
67
|
+
async \u6E05\u7406\u65E0\u6548\u8FDE\u63A5() {
|
|
68
|
+
let \u6E05\u7406\u6570\u91CF = 0;
|
|
69
|
+
for (let [id, ws] of Object.entries(this.\u8FDE\u63A5\u8868)) {
|
|
70
|
+
if (ws === null || ws.readyState === import_ws.WebSocket.CLOSED) {
|
|
71
|
+
this.\u5220\u9664\u8FDE\u63A5(id);
|
|
72
|
+
\u6E05\u7406\u6570\u91CF++;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (\u6E05\u7406\u6570\u91CF > 0) {
|
|
76
|
+
this.log.infoSync(`\u6E05\u7406\u4E86 ${\u6E05\u7406\u6570\u91CF} \u4E2A\u65E0\u6548 WebSocket \u8FDE\u63A5`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
60
79
|
};
|
|
61
80
|
var Global = new import_ts_global.GlobalService([
|
|
62
81
|
new import_ts_global.GlobalItem("log", log),
|
|
@@ -7,12 +7,14 @@ declare class WebSocket管理器 {
|
|
|
7
7
|
private 连接表;
|
|
8
8
|
private log;
|
|
9
9
|
private 清理函数表;
|
|
10
|
+
private 定时器ID;
|
|
10
11
|
constructor(连接表: Record<id, WebSocket | null>);
|
|
11
12
|
增加连接(id: id, ws句柄: WebSocket): void;
|
|
12
13
|
查询连接存在(id: string): boolean;
|
|
13
14
|
设置清理函数(id: string, 清理函数: () => Promise<void>): Promise<void>;
|
|
14
15
|
获得句柄(id: id): Promise<WebSocket | null>;
|
|
15
16
|
删除连接(id: string): void;
|
|
17
|
+
private 清理无效连接;
|
|
16
18
|
}
|
|
17
19
|
declare let Global: GlobalService<[GlobalItem<"log", Log>, GlobalItem<"WebSocket管理器", WebSocket管理器>]>;
|
|
18
20
|
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -312,13 +312,20 @@ var \u4E2D\u6587\u8DEF\u5F84\u652F\u6301\u63D2\u4EF6 = class extends \u63D2\u4EF
|
|
|
312
312
|
// src/global/global.ts
|
|
313
313
|
var import_ts_global = require("@lsby/ts-global");
|
|
314
314
|
var import_ts_log = require("@lsby/ts-log");
|
|
315
|
+
var import_ws = require("ws");
|
|
315
316
|
var log = new import_ts_log.Log("@lsby:net-core");
|
|
316
317
|
var WebSocket\u7BA1\u7406\u5668 = class {
|
|
317
318
|
constructor(\u8FDE\u63A5\u8868) {
|
|
318
319
|
this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
|
|
320
|
+
this.\u5B9A\u65F6\u5668ID = setInterval(() => {
|
|
321
|
+
this.\u6E05\u7406\u65E0\u6548\u8FDE\u63A5().catch((err) => {
|
|
322
|
+
this.log.errorSync(`\u6E05\u7406\u65E0\u6548\u8FDE\u63A5\u5931\u8D25: ${err}`);
|
|
323
|
+
});
|
|
324
|
+
}, 3e4);
|
|
319
325
|
}
|
|
320
326
|
log = log.extend("@lsby:net-core").extend("WebSocket\u7BA1\u7406\u5668");
|
|
321
327
|
\u6E05\u7406\u51FD\u6570\u8868 = {};
|
|
328
|
+
\u5B9A\u65F6\u5668ID = null;
|
|
322
329
|
\u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
|
|
323
330
|
this.\u8FDE\u63A5\u8868[id] = ws\u53E5\u67C4;
|
|
324
331
|
}
|
|
@@ -343,6 +350,18 @@ var WebSocket\u7BA1\u7406\u5668 = class {
|
|
|
343
350
|
delete this.\u8FDE\u63A5\u8868[id];
|
|
344
351
|
delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
345
352
|
}
|
|
353
|
+
async \u6E05\u7406\u65E0\u6548\u8FDE\u63A5() {
|
|
354
|
+
let \u6E05\u7406\u6570\u91CF = 0;
|
|
355
|
+
for (let [id, ws] of Object.entries(this.\u8FDE\u63A5\u8868)) {
|
|
356
|
+
if (ws === null || ws.readyState === import_ws.WebSocket.CLOSED) {
|
|
357
|
+
this.\u5220\u9664\u8FDE\u63A5(id);
|
|
358
|
+
\u6E05\u7406\u6570\u91CF++;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
if (\u6E05\u7406\u6570\u91CF > 0) {
|
|
362
|
+
this.log.infoSync(`\u6E05\u7406\u4E86 ${\u6E05\u7406\u6570\u91CF} \u4E2A\u65E0\u6548 WebSocket \u8FDE\u63A5`);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
346
365
|
};
|
|
347
366
|
var Global = new import_ts_global.GlobalService([
|
|
348
367
|
new import_ts_global.GlobalItem("log", log),
|
|
@@ -480,7 +499,7 @@ var \u8868\u5355\u89E3\u6790\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
|
|
|
480
499
|
};
|
|
481
500
|
|
|
482
501
|
// src/plugin/extend/web-socket.ts
|
|
483
|
-
var
|
|
502
|
+
var import_ws2 = require("ws");
|
|
484
503
|
var import_zod4 = require("zod");
|
|
485
504
|
var WebSocket\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
|
|
486
505
|
log = Global.getItem("log");
|
|
@@ -514,7 +533,7 @@ var WebSocket\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
|
|
|
514
533
|
await log2.error("\u672A\u80FD\u83B7\u53D6\u5230\u6709\u6548\u7684 WebSocket \u53E5\u67C4");
|
|
515
534
|
return;
|
|
516
535
|
}
|
|
517
|
-
if (ws\u53E5\u67C4.readyState !==
|
|
536
|
+
if (ws\u53E5\u67C4.readyState !== import_ws2.WebSocket.OPEN) {
|
|
518
537
|
await log2.warn("WebSocket \u672A\u6253\u5F00\uFF0C\u65E0\u6CD5\u53D1\u9001\u6D88\u606F", { wsId });
|
|
519
538
|
return;
|
|
520
539
|
}
|
|
@@ -548,7 +567,7 @@ var import_express3 = __toESM(require("express"), 1);
|
|
|
548
567
|
var import_promises = require("fs/promises");
|
|
549
568
|
var import_node_os = require("os");
|
|
550
569
|
var import_short_uuid = __toESM(require("short-uuid"), 1);
|
|
551
|
-
var
|
|
570
|
+
var import_ws3 = require("ws");
|
|
552
571
|
var \u670D\u52A1\u5668 = class {
|
|
553
572
|
constructor(\u63A5\u53E3\u4EEC, \u7AEF\u53E3, \u9759\u6001\u8D44\u6E90\u8DEF\u5F84, \u9ED8\u8BA4get\u6587\u4EF6\u8DEF\u5F84) {
|
|
554
573
|
this.\u63A5\u53E3\u4EEC = \u63A5\u53E3\u4EEC;
|
|
@@ -640,7 +659,7 @@ var \u670D\u52A1\u5668 = class {
|
|
|
640
659
|
await log2.info("\u63A5\u53E3\u5B8C\u6574\u6267\u884C\u8017\u65F6: %o ms", \u603B\u8017\u65F6);
|
|
641
660
|
}
|
|
642
661
|
async \u521D\u59CB\u5316WebSocket(server) {
|
|
643
|
-
let wss = new
|
|
662
|
+
let wss = new import_ws3.WebSocketServer({ server });
|
|
644
663
|
let logBase = await this.log;
|
|
645
664
|
wss.on("listening", async () => {
|
|
646
665
|
let log2 = logBase;
|
|
@@ -27,13 +27,20 @@ module.exports = __toCommonJS(custom_data_exports);
|
|
|
27
27
|
// src/global/global.ts
|
|
28
28
|
var import_ts_global = require("@lsby/ts-global");
|
|
29
29
|
var import_ts_log = require("@lsby/ts-log");
|
|
30
|
+
var import_ws = require("ws");
|
|
30
31
|
var log = new import_ts_log.Log("@lsby:net-core");
|
|
31
32
|
var WebSocket\u7BA1\u7406\u5668 = class {
|
|
32
33
|
constructor(\u8FDE\u63A5\u8868) {
|
|
33
34
|
this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
|
|
35
|
+
this.\u5B9A\u65F6\u5668ID = setInterval(() => {
|
|
36
|
+
this.\u6E05\u7406\u65E0\u6548\u8FDE\u63A5().catch((err) => {
|
|
37
|
+
this.log.errorSync(`\u6E05\u7406\u65E0\u6548\u8FDE\u63A5\u5931\u8D25: ${err}`);
|
|
38
|
+
});
|
|
39
|
+
}, 3e4);
|
|
34
40
|
}
|
|
35
41
|
log = log.extend("@lsby:net-core").extend("WebSocket\u7BA1\u7406\u5668");
|
|
36
42
|
\u6E05\u7406\u51FD\u6570\u8868 = {};
|
|
43
|
+
\u5B9A\u65F6\u5668ID = null;
|
|
37
44
|
\u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
|
|
38
45
|
this.\u8FDE\u63A5\u8868[id] = ws\u53E5\u67C4;
|
|
39
46
|
}
|
|
@@ -58,6 +65,18 @@ var WebSocket\u7BA1\u7406\u5668 = class {
|
|
|
58
65
|
delete this.\u8FDE\u63A5\u8868[id];
|
|
59
66
|
delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
60
67
|
}
|
|
68
|
+
async \u6E05\u7406\u65E0\u6548\u8FDE\u63A5() {
|
|
69
|
+
let \u6E05\u7406\u6570\u91CF = 0;
|
|
70
|
+
for (let [id, ws] of Object.entries(this.\u8FDE\u63A5\u8868)) {
|
|
71
|
+
if (ws === null || ws.readyState === import_ws.WebSocket.CLOSED) {
|
|
72
|
+
this.\u5220\u9664\u8FDE\u63A5(id);
|
|
73
|
+
\u6E05\u7406\u6570\u91CF++;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (\u6E05\u7406\u6570\u91CF > 0) {
|
|
77
|
+
this.log.infoSync(`\u6E05\u7406\u4E86 ${\u6E05\u7406\u6570\u91CF} \u4E2A\u65E0\u6548 WebSocket \u8FDE\u63A5`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
61
80
|
};
|
|
62
81
|
var Global = new import_ts_global.GlobalService([
|
|
63
82
|
new import_ts_global.GlobalItem("log", log),
|
|
@@ -39,13 +39,20 @@ var import_node_util = require("util");
|
|
|
39
39
|
// src/global/global.ts
|
|
40
40
|
var import_ts_global = require("@lsby/ts-global");
|
|
41
41
|
var import_ts_log = require("@lsby/ts-log");
|
|
42
|
+
var import_ws = require("ws");
|
|
42
43
|
var log = new import_ts_log.Log("@lsby:net-core");
|
|
43
44
|
var WebSocket\u7BA1\u7406\u5668 = class {
|
|
44
45
|
constructor(\u8FDE\u63A5\u8868) {
|
|
45
46
|
this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
|
|
47
|
+
this.\u5B9A\u65F6\u5668ID = setInterval(() => {
|
|
48
|
+
this.\u6E05\u7406\u65E0\u6548\u8FDE\u63A5().catch((err) => {
|
|
49
|
+
this.log.errorSync(`\u6E05\u7406\u65E0\u6548\u8FDE\u63A5\u5931\u8D25: ${err}`);
|
|
50
|
+
});
|
|
51
|
+
}, 3e4);
|
|
46
52
|
}
|
|
47
53
|
log = log.extend("@lsby:net-core").extend("WebSocket\u7BA1\u7406\u5668");
|
|
48
54
|
\u6E05\u7406\u51FD\u6570\u8868 = {};
|
|
55
|
+
\u5B9A\u65F6\u5668ID = null;
|
|
49
56
|
\u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
|
|
50
57
|
this.\u8FDE\u63A5\u8868[id] = ws\u53E5\u67C4;
|
|
51
58
|
}
|
|
@@ -70,6 +77,18 @@ var WebSocket\u7BA1\u7406\u5668 = class {
|
|
|
70
77
|
delete this.\u8FDE\u63A5\u8868[id];
|
|
71
78
|
delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
72
79
|
}
|
|
80
|
+
async \u6E05\u7406\u65E0\u6548\u8FDE\u63A5() {
|
|
81
|
+
let \u6E05\u7406\u6570\u91CF = 0;
|
|
82
|
+
for (let [id, ws] of Object.entries(this.\u8FDE\u63A5\u8868)) {
|
|
83
|
+
if (ws === null || ws.readyState === import_ws.WebSocket.CLOSED) {
|
|
84
|
+
this.\u5220\u9664\u8FDE\u63A5(id);
|
|
85
|
+
\u6E05\u7406\u6570\u91CF++;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (\u6E05\u7406\u6570\u91CF > 0) {
|
|
89
|
+
this.log.infoSync(`\u6E05\u7406\u4E86 ${\u6E05\u7406\u6570\u91CF} \u4E2A\u65E0\u6548 WebSocket \u8FDE\u63A5`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
73
92
|
};
|
|
74
93
|
var Global = new import_ts_global.GlobalService([
|
|
75
94
|
new import_ts_global.GlobalItem("log", log),
|
|
@@ -23,19 +23,26 @@ __export(web_socket_exports, {
|
|
|
23
23
|
WebSocket\u63D2\u4EF6: () => WebSocket\u63D2\u4EF6
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(web_socket_exports);
|
|
26
|
-
var
|
|
26
|
+
var import_ws2 = require("ws");
|
|
27
27
|
var import_zod = require("zod");
|
|
28
28
|
|
|
29
29
|
// src/global/global.ts
|
|
30
30
|
var import_ts_global = require("@lsby/ts-global");
|
|
31
31
|
var import_ts_log = require("@lsby/ts-log");
|
|
32
|
+
var import_ws = require("ws");
|
|
32
33
|
var log = new import_ts_log.Log("@lsby:net-core");
|
|
33
34
|
var WebSocket\u7BA1\u7406\u5668 = class {
|
|
34
35
|
constructor(\u8FDE\u63A5\u8868) {
|
|
35
36
|
this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
|
|
37
|
+
this.\u5B9A\u65F6\u5668ID = setInterval(() => {
|
|
38
|
+
this.\u6E05\u7406\u65E0\u6548\u8FDE\u63A5().catch((err) => {
|
|
39
|
+
this.log.errorSync(`\u6E05\u7406\u65E0\u6548\u8FDE\u63A5\u5931\u8D25: ${err}`);
|
|
40
|
+
});
|
|
41
|
+
}, 3e4);
|
|
36
42
|
}
|
|
37
43
|
log = log.extend("@lsby:net-core").extend("WebSocket\u7BA1\u7406\u5668");
|
|
38
44
|
\u6E05\u7406\u51FD\u6570\u8868 = {};
|
|
45
|
+
\u5B9A\u65F6\u5668ID = null;
|
|
39
46
|
\u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
|
|
40
47
|
this.\u8FDE\u63A5\u8868[id] = ws\u53E5\u67C4;
|
|
41
48
|
}
|
|
@@ -60,6 +67,18 @@ var WebSocket\u7BA1\u7406\u5668 = class {
|
|
|
60
67
|
delete this.\u8FDE\u63A5\u8868[id];
|
|
61
68
|
delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
62
69
|
}
|
|
70
|
+
async \u6E05\u7406\u65E0\u6548\u8FDE\u63A5() {
|
|
71
|
+
let \u6E05\u7406\u6570\u91CF = 0;
|
|
72
|
+
for (let [id, ws] of Object.entries(this.\u8FDE\u63A5\u8868)) {
|
|
73
|
+
if (ws === null || ws.readyState === import_ws.WebSocket.CLOSED) {
|
|
74
|
+
this.\u5220\u9664\u8FDE\u63A5(id);
|
|
75
|
+
\u6E05\u7406\u6570\u91CF++;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (\u6E05\u7406\u6570\u91CF > 0) {
|
|
79
|
+
this.log.infoSync(`\u6E05\u7406\u4E86 ${\u6E05\u7406\u6570\u91CF} \u4E2A\u65E0\u6548 WebSocket \u8FDE\u63A5`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
63
82
|
};
|
|
64
83
|
var Global = new import_ts_global.GlobalService([
|
|
65
84
|
new import_ts_global.GlobalItem("log", log),
|
|
@@ -113,7 +132,7 @@ var WebSocket\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
|
|
|
113
132
|
await log2.error("\u672A\u80FD\u83B7\u53D6\u5230\u6709\u6548\u7684 WebSocket \u53E5\u67C4");
|
|
114
133
|
return;
|
|
115
134
|
}
|
|
116
|
-
if (ws\u53E5\u67C4.readyState !==
|
|
135
|
+
if (ws\u53E5\u67C4.readyState !== import_ws2.WebSocket.OPEN) {
|
|
117
136
|
await log2.warn("WebSocket \u672A\u6253\u5F00\uFF0C\u65E0\u6CD5\u53D1\u9001\u6D88\u606F", { wsId });
|
|
118
137
|
return;
|
|
119
138
|
}
|
|
@@ -37,18 +37,25 @@ var import_express = __toESM(require("express"), 1);
|
|
|
37
37
|
var import_promises = require("fs/promises");
|
|
38
38
|
var import_node_os = require("os");
|
|
39
39
|
var import_short_uuid = __toESM(require("short-uuid"), 1);
|
|
40
|
-
var
|
|
40
|
+
var import_ws2 = require("ws");
|
|
41
41
|
|
|
42
42
|
// src/global/global.ts
|
|
43
43
|
var import_ts_global = require("@lsby/ts-global");
|
|
44
44
|
var import_ts_log = require("@lsby/ts-log");
|
|
45
|
+
var import_ws = require("ws");
|
|
45
46
|
var log = new import_ts_log.Log("@lsby:net-core");
|
|
46
47
|
var WebSocket\u7BA1\u7406\u5668 = class {
|
|
47
48
|
constructor(\u8FDE\u63A5\u8868) {
|
|
48
49
|
this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
|
|
50
|
+
this.\u5B9A\u65F6\u5668ID = setInterval(() => {
|
|
51
|
+
this.\u6E05\u7406\u65E0\u6548\u8FDE\u63A5().catch((err) => {
|
|
52
|
+
this.log.errorSync(`\u6E05\u7406\u65E0\u6548\u8FDE\u63A5\u5931\u8D25: ${err}`);
|
|
53
|
+
});
|
|
54
|
+
}, 3e4);
|
|
49
55
|
}
|
|
50
56
|
log = log.extend("@lsby:net-core").extend("WebSocket\u7BA1\u7406\u5668");
|
|
51
57
|
\u6E05\u7406\u51FD\u6570\u8868 = {};
|
|
58
|
+
\u5B9A\u65F6\u5668ID = null;
|
|
52
59
|
\u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
|
|
53
60
|
this.\u8FDE\u63A5\u8868[id] = ws\u53E5\u67C4;
|
|
54
61
|
}
|
|
@@ -73,6 +80,18 @@ var WebSocket\u7BA1\u7406\u5668 = class {
|
|
|
73
80
|
delete this.\u8FDE\u63A5\u8868[id];
|
|
74
81
|
delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
75
82
|
}
|
|
83
|
+
async \u6E05\u7406\u65E0\u6548\u8FDE\u63A5() {
|
|
84
|
+
let \u6E05\u7406\u6570\u91CF = 0;
|
|
85
|
+
for (let [id, ws] of Object.entries(this.\u8FDE\u63A5\u8868)) {
|
|
86
|
+
if (ws === null || ws.readyState === import_ws.WebSocket.CLOSED) {
|
|
87
|
+
this.\u5220\u9664\u8FDE\u63A5(id);
|
|
88
|
+
\u6E05\u7406\u6570\u91CF++;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (\u6E05\u7406\u6570\u91CF > 0) {
|
|
92
|
+
this.log.infoSync(`\u6E05\u7406\u4E86 ${\u6E05\u7406\u6570\u91CF} \u4E2A\u65E0\u6548 WebSocket \u8FDE\u63A5`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
76
95
|
};
|
|
77
96
|
var Global = new import_ts_global.GlobalService([
|
|
78
97
|
new import_ts_global.GlobalItem("log", log),
|
|
@@ -190,7 +209,7 @@ var \u670D\u52A1\u5668 = class {
|
|
|
190
209
|
await log2.info("\u63A5\u53E3\u5B8C\u6574\u6267\u884C\u8017\u65F6: %o ms", \u603B\u8017\u65F6);
|
|
191
210
|
}
|
|
192
211
|
async \u521D\u59CB\u5316WebSocket(server) {
|
|
193
|
-
let wss = new
|
|
212
|
+
let wss = new import_ws2.WebSocketServer({ server });
|
|
194
213
|
let logBase = await this.log;
|
|
195
214
|
wss.on("listening", async () => {
|
|
196
215
|
let log2 = logBase;
|
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
// src/global/global.ts
|
|
2
2
|
import { GlobalItem, GlobalService } from "@lsby/ts-global";
|
|
3
3
|
import { Log } from "@lsby/ts-log";
|
|
4
|
+
import { WebSocket } from "ws";
|
|
4
5
|
var log = new Log("@lsby:net-core");
|
|
5
6
|
var WebSocket\u7BA1\u7406\u5668 = class {
|
|
6
7
|
constructor(\u8FDE\u63A5\u8868) {
|
|
7
8
|
this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
|
|
9
|
+
this.\u5B9A\u65F6\u5668ID = setInterval(() => {
|
|
10
|
+
this.\u6E05\u7406\u65E0\u6548\u8FDE\u63A5().catch((err) => {
|
|
11
|
+
this.log.errorSync(`\u6E05\u7406\u65E0\u6548\u8FDE\u63A5\u5931\u8D25: ${err}`);
|
|
12
|
+
});
|
|
13
|
+
}, 3e4);
|
|
8
14
|
}
|
|
9
15
|
log = log.extend("@lsby:net-core").extend("WebSocket\u7BA1\u7406\u5668");
|
|
10
16
|
\u6E05\u7406\u51FD\u6570\u8868 = {};
|
|
17
|
+
\u5B9A\u65F6\u5668ID = null;
|
|
11
18
|
\u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
|
|
12
19
|
this.\u8FDE\u63A5\u8868[id] = ws\u53E5\u67C4;
|
|
13
20
|
}
|
|
@@ -32,6 +39,18 @@ var WebSocket\u7BA1\u7406\u5668 = class {
|
|
|
32
39
|
delete this.\u8FDE\u63A5\u8868[id];
|
|
33
40
|
delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
34
41
|
}
|
|
42
|
+
async \u6E05\u7406\u65E0\u6548\u8FDE\u63A5() {
|
|
43
|
+
let \u6E05\u7406\u6570\u91CF = 0;
|
|
44
|
+
for (let [id, ws] of Object.entries(this.\u8FDE\u63A5\u8868)) {
|
|
45
|
+
if (ws === null || ws.readyState === WebSocket.CLOSED) {
|
|
46
|
+
this.\u5220\u9664\u8FDE\u63A5(id);
|
|
47
|
+
\u6E05\u7406\u6570\u91CF++;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (\u6E05\u7406\u6570\u91CF > 0) {
|
|
51
|
+
this.log.infoSync(`\u6E05\u7406\u4E86 ${\u6E05\u7406\u6570\u91CF} \u4E2A\u65E0\u6548 WebSocket \u8FDE\u63A5`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
35
54
|
};
|
|
36
55
|
var Global = new GlobalService([
|
|
37
56
|
new GlobalItem("log", log),
|
|
@@ -7,12 +7,14 @@ declare class WebSocket管理器 {
|
|
|
7
7
|
private 连接表;
|
|
8
8
|
private log;
|
|
9
9
|
private 清理函数表;
|
|
10
|
+
private 定时器ID;
|
|
10
11
|
constructor(连接表: Record<id, WebSocket | null>);
|
|
11
12
|
增加连接(id: id, ws句柄: WebSocket): void;
|
|
12
13
|
查询连接存在(id: string): boolean;
|
|
13
14
|
设置清理函数(id: string, 清理函数: () => Promise<void>): Promise<void>;
|
|
14
15
|
获得句柄(id: id): Promise<WebSocket | null>;
|
|
15
16
|
删除连接(id: string): void;
|
|
17
|
+
private 清理无效连接;
|
|
16
18
|
}
|
|
17
19
|
declare let Global: GlobalService<[GlobalItem<"log", Log>, GlobalItem<"WebSocket管理器", WebSocket管理器>]>;
|
|
18
20
|
|
package/dist/esm/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
WebSocket插件
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CGLDW3PN.js";
|
|
4
4
|
import {
|
|
5
5
|
中文路径支持插件
|
|
6
6
|
} from "./chunk-4BFNDHRC.js";
|
|
7
7
|
import {
|
|
8
8
|
自定义数据插件
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-VNRSKOGV.js";
|
|
10
10
|
import {
|
|
11
11
|
JSON解析插件
|
|
12
12
|
} from "./chunk-GMYXAJS3.js";
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
} from "./chunk-RRUUWHTF.js";
|
|
22
22
|
import {
|
|
23
23
|
表单解析插件
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-SWPAN4RD.js";
|
|
25
25
|
import {
|
|
26
26
|
常用延时直接形式接口封装
|
|
27
27
|
} from "./chunk-JXTWTY2S.js";
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
} from "./chunk-43GZE5YL.js";
|
|
34
34
|
import {
|
|
35
35
|
服务器
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-GEQKQOFV.js";
|
|
37
37
|
import {
|
|
38
38
|
EXPORT_TYPE
|
|
39
39
|
} from "./chunk-ZF7EC2OM.js";
|
|
@@ -49,7 +49,7 @@ import {
|
|
|
49
49
|
接口结果返回器,
|
|
50
50
|
自定义返回器
|
|
51
51
|
} from "./chunk-XBAKTT6S.js";
|
|
52
|
-
import "./chunk-
|
|
52
|
+
import "./chunk-VTVWF3IE.js";
|
|
53
53
|
import {
|
|
54
54
|
构造元组,
|
|
55
55
|
构造对象
|