@lsby/net-core 0.7.23 → 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.
@@ -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
 
@@ -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 import_ws = require("ws");
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");
@@ -508,14 +527,13 @@ var WebSocket\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
508
527
  ws\u64CD\u4F5C: {
509
528
  async \u53D1\u9001ws\u4FE1\u606F(\u4FE1\u606F) {
510
529
  if (ws\u53E5\u67C4 === null) {
511
- await log2.debug("\u5C1D\u8BD5\u83B7\u53D6 WebSocket \u53E5\u67C4");
512
530
  ws\u53E5\u67C4 = await WebSocket\u7BA1\u7406\u56682.\u83B7\u5F97\u53E5\u67C4(wsId);
513
531
  }
514
532
  if (ws\u53E5\u67C4 === null) {
515
533
  await log2.error("\u672A\u80FD\u83B7\u53D6\u5230\u6709\u6548\u7684 WebSocket \u53E5\u67C4");
516
534
  return;
517
535
  }
518
- if (ws\u53E5\u67C4.readyState !== import_ws.WebSocket.OPEN) {
536
+ if (ws\u53E5\u67C4.readyState !== import_ws2.WebSocket.OPEN) {
519
537
  await log2.warn("WebSocket \u672A\u6253\u5F00\uFF0C\u65E0\u6CD5\u53D1\u9001\u6D88\u606F", { wsId });
520
538
  return;
521
539
  }
@@ -549,7 +567,7 @@ var import_express3 = __toESM(require("express"), 1);
549
567
  var import_promises = require("fs/promises");
550
568
  var import_node_os = require("os");
551
569
  var import_short_uuid = __toESM(require("short-uuid"), 1);
552
- var import_ws2 = require("ws");
570
+ var import_ws3 = require("ws");
553
571
  var \u670D\u52A1\u5668 = class {
554
572
  constructor(\u63A5\u53E3\u4EEC, \u7AEF\u53E3, \u9759\u6001\u8D44\u6E90\u8DEF\u5F84, \u9ED8\u8BA4get\u6587\u4EF6\u8DEF\u5F84) {
555
573
  this.\u63A5\u53E3\u4EEC = \u63A5\u53E3\u4EEC;
@@ -641,7 +659,7 @@ var \u670D\u52A1\u5668 = class {
641
659
  await log2.info("\u63A5\u53E3\u5B8C\u6574\u6267\u884C\u8017\u65F6: %o ms", \u603B\u8017\u65F6);
642
660
  }
643
661
  async \u521D\u59CB\u5316WebSocket(server) {
644
- let wss = new import_ws2.WebSocketServer({ server });
662
+ let wss = new import_ws3.WebSocketServer({ server });
645
663
  let logBase = await this.log;
646
664
  wss.on("listening", async () => {
647
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 import_ws = require("ws");
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),
@@ -107,14 +126,13 @@ var WebSocket\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
107
126
  ws\u64CD\u4F5C: {
108
127
  async \u53D1\u9001ws\u4FE1\u606F(\u4FE1\u606F) {
109
128
  if (ws\u53E5\u67C4 === null) {
110
- await log2.debug("\u5C1D\u8BD5\u83B7\u53D6 WebSocket \u53E5\u67C4");
111
129
  ws\u53E5\u67C4 = await WebSocket\u7BA1\u7406\u56682.\u83B7\u5F97\u53E5\u67C4(wsId);
112
130
  }
113
131
  if (ws\u53E5\u67C4 === null) {
114
132
  await log2.error("\u672A\u80FD\u83B7\u53D6\u5230\u6709\u6548\u7684 WebSocket \u53E5\u67C4");
115
133
  return;
116
134
  }
117
- if (ws\u53E5\u67C4.readyState !== import_ws.WebSocket.OPEN) {
135
+ if (ws\u53E5\u67C4.readyState !== import_ws2.WebSocket.OPEN) {
118
136
  await log2.warn("WebSocket \u672A\u6253\u5F00\uFF0C\u65E0\u6CD5\u53D1\u9001\u6D88\u606F", { wsId });
119
137
  return;
120
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 import_ws = require("ws");
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 import_ws.WebSocketServer({ server });
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;
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-43GZE5YL.js";
4
4
  import {
5
5
  Global
6
- } from "./chunk-BFL3HOQE.js";
6
+ } from "./chunk-VTVWF3IE.js";
7
7
 
8
8
  // src/plugin/extend/web-socket.ts
9
9
  import { WebSocket } from "ws";
@@ -34,7 +34,6 @@ var WebSocket\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
34
34
  ws\u64CD\u4F5C: {
35
35
  async \u53D1\u9001ws\u4FE1\u606F(\u4FE1\u606F) {
36
36
  if (ws\u53E5\u67C4 === null) {
37
- await log.debug("\u5C1D\u8BD5\u83B7\u53D6 WebSocket \u53E5\u67C4");
38
37
  ws\u53E5\u67C4 = await WebSocket\u7BA1\u7406\u5668.\u83B7\u5F97\u53E5\u67C4(wsId);
39
38
  }
40
39
  if (ws\u53E5\u67C4 === null) {
@@ -1,9 +1,9 @@
1
+ import {
2
+ Global
3
+ } from "./chunk-VTVWF3IE.js";
1
4
  import {
2
5
  递归截断字符串
3
6
  } from "./chunk-ZIVQ3WZA.js";
4
- import {
5
- Global
6
- } from "./chunk-BFL3HOQE.js";
7
7
 
8
8
  // src/server/server.ts
9
9
  import express from "express";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-43GZE5YL.js";
4
4
  import {
5
5
  Global
6
- } from "./chunk-BFL3HOQE.js";
6
+ } from "./chunk-VTVWF3IE.js";
7
7
 
8
8
  // src/plugin/extend/urlencoded.ts
9
9
  import express from "express";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-43GZE5YL.js";
4
4
  import {
5
5
  Global
6
- } from "./chunk-BFL3HOQE.js";
6
+ } from "./chunk-VTVWF3IE.js";
7
7
 
8
8
  // src/plugin/extend/custom-data.ts
9
9
  var \u81EA\u5B9A\u4E49\u6570\u636E\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
@@ -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
 
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Global,
3
3
  WebSocket管理器
4
- } from "../chunk-BFL3HOQE.js";
4
+ } from "../chunk-VTVWF3IE.js";
5
5
  export {
6
6
  Global,
7
7
  WebSocket\u7BA1\u7406\u5668
package/dist/esm/index.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  WebSocket插件
3
- } from "./chunk-DZJEJ3GT.js";
3
+ } from "./chunk-CGLDW3PN.js";
4
4
  import {
5
5
  中文路径支持插件
6
6
  } from "./chunk-4BFNDHRC.js";
7
7
  import {
8
8
  自定义数据插件
9
- } from "./chunk-VFOG5LBT.js";
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-YITJBWMM.js";
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-YUHN7S7X.js";
36
+ } from "./chunk-GEQKQOFV.js";
37
37
  import {
38
38
  EXPORT_TYPE
39
39
  } from "./chunk-ZF7EC2OM.js";
@@ -49,12 +49,12 @@ import {
49
49
  接口结果返回器,
50
50
  自定义返回器
51
51
  } from "./chunk-XBAKTT6S.js";
52
+ import "./chunk-VTVWF3IE.js";
52
53
  import {
53
54
  构造元组,
54
55
  构造对象
55
56
  } from "./chunk-YMH6HJJF.js";
56
57
  import "./chunk-ZIVQ3WZA.js";
57
- import "./chunk-BFL3HOQE.js";
58
58
  import {
59
59
  接口
60
60
  } from "./chunk-MDUWXEQ7.js";
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  自定义数据插件
3
- } from "../../chunk-VFOG5LBT.js";
3
+ } from "../../chunk-VNRSKOGV.js";
4
4
  import "../../chunk-43GZE5YL.js";
5
- import "../../chunk-BFL3HOQE.js";
5
+ import "../../chunk-VTVWF3IE.js";
6
6
  export {
7
7
  \u81EA\u5B9A\u4E49\u6570\u636E\u63D2\u4EF6
8
8
  };
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  表单解析插件
3
- } from "../../chunk-YITJBWMM.js";
3
+ } from "../../chunk-SWPAN4RD.js";
4
4
  import "../../chunk-43GZE5YL.js";
5
- import "../../chunk-BFL3HOQE.js";
5
+ import "../../chunk-VTVWF3IE.js";
6
6
  export {
7
7
  \u8868\u5355\u89E3\u6790\u63D2\u4EF6
8
8
  };
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  WebSocket插件
3
- } from "../../chunk-DZJEJ3GT.js";
3
+ } from "../../chunk-CGLDW3PN.js";
4
4
  import "../../chunk-43GZE5YL.js";
5
- import "../../chunk-BFL3HOQE.js";
5
+ import "../../chunk-VTVWF3IE.js";
6
6
  export {
7
7
  WebSocket\u63D2\u4EF6
8
8
  };
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  服务器
3
- } from "../chunk-YUHN7S7X.js";
3
+ } from "../chunk-GEQKQOFV.js";
4
+ import "../chunk-VTVWF3IE.js";
4
5
  import "../chunk-ZIVQ3WZA.js";
5
- import "../chunk-BFL3HOQE.js";
6
6
  export {
7
7
  \u670D\u52A1\u5668
8
8
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lsby/net-core",
3
- "version": "0.7.23",
3
+ "version": "0.7.25",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "require": "./dist/cjs/index.cjs",