@lsby/net-core 0.5.0-beta.3 → 0.5.0-beta.5

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 (36) hide show
  1. package/dist/cjs/global/global.cjs +153 -20
  2. package/dist/cjs/global/global.d.cts +2 -2
  3. package/dist/cjs/global/web-socket-management.cjs +202 -0
  4. package/dist/cjs/global/web-socket-management.d.cts +18 -0
  5. package/dist/cjs/index.cjs +173 -61
  6. package/dist/cjs/interface-api/interface-logic.cjs +153 -20
  7. package/dist/cjs/plugin/extend/custom-data.cjs +153 -20
  8. package/dist/cjs/plugin/extend/json.cjs +153 -20
  9. package/dist/cjs/plugin/extend/urlencoded.cjs +153 -20
  10. package/dist/cjs/plugin/extend/web-socket.cjs +159 -43
  11. package/dist/cjs/server/server.cjs +167 -38
  12. package/dist/esm/{chunk-NDNOPR5R.js → chunk-4FO6I3GR.js} +7 -24
  13. package/dist/esm/{chunk-7BWGQYV4.js → chunk-7N23PHZT.js} +3 -3
  14. package/dist/esm/chunk-B6VWM5FD.js +177 -0
  15. package/dist/esm/{chunk-TELFIRYE.js → chunk-GQMZHWBG.js} +1 -1
  16. package/dist/esm/{chunk-GXEQYEJ4.js → chunk-HI4NIE2I.js} +1 -1
  17. package/dist/esm/{chunk-7EGBQ7BT.js → chunk-I4ENXBQQ.js} +15 -19
  18. package/dist/esm/{chunk-LM4VEBKS.js → chunk-UTU2QT7G.js} +1 -1
  19. package/dist/esm/global/global.d.ts +2 -2
  20. package/dist/esm/global/global.js +1 -2
  21. package/dist/esm/global/web-socket-management.d.ts +18 -0
  22. package/dist/esm/global/web-socket-management.js +6 -0
  23. package/dist/esm/index.js +20 -21
  24. package/dist/esm/interface-api/interface-logic.js +2 -3
  25. package/dist/esm/plugin/extend/custom-data.js +2 -3
  26. package/dist/esm/plugin/extend/json.js +2 -3
  27. package/dist/esm/plugin/extend/urlencoded.js +2 -3
  28. package/dist/esm/plugin/extend/web-socket.js +2 -3
  29. package/dist/esm/server/server.js +2 -3
  30. package/package.json +1 -1
  31. package/dist/cjs/global/ws.cjs +0 -55
  32. package/dist/cjs/global/ws.d.cts +0 -15
  33. package/dist/esm/chunk-6OUBMR67.js +0 -19
  34. package/dist/esm/chunk-7SYNHJKU.js +0 -31
  35. package/dist/esm/global/ws.d.ts +0 -15
  36. package/dist/esm/global/ws.js +0 -6
@@ -26,31 +26,164 @@ module.exports = __toCommonJS(global_exports);
26
26
  var import_ts_global = require("@lsby/ts-global");
27
27
  var import_ts_log = require("@lsby/ts-log");
28
28
 
29
- // src/global/ws.ts
30
- var WebSocket\u7BA1\u7406\u8005 = class {
31
- constructor(\u8FDE\u63A5\u8868) {
32
- this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
29
+ // src/global/web-socket-management.ts
30
+ var WebSocket\u7BA1\u7406\u5668 = class {
31
+ log = Global.getItem("log").then((a) => a.extend("WebSocket\u7BA1\u7406\u5668"));
32
+ \u8FDE\u63A5\u8868 = {};
33
+ async \u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, code, \u8BF4\u660E) {
34
+ let log = (await this.log).extend("\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5").extend(id);
35
+ try {
36
+ await this.\u8FDE\u63A5\u8868[id]?.\u6E05\u7406\u51FD\u6570?.();
37
+ } catch (err) {
38
+ await log.error(`\u6267\u884C\u6E05\u7406\u51FD\u6570\u5931\u8D25: %o.`, String(err));
39
+ }
40
+ this.\u8FDE\u63A5\u8868[id]?.ws?.close(code, \u8BF4\u660E);
41
+ delete this.\u8FDE\u63A5\u8868[id];
33
42
  }
34
- \u6E05\u7406\u51FD\u6570\u8868 = {};
35
- async \u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
36
- this.\u8FDE\u63A5\u8868[id] = ws\u53E5\u67C4;
43
+ async \u9500\u6BC1\u5224\u5B9A(id) {
44
+ let log = (await this.log).extend("\u9500\u6BC1\u5224\u5B9A").extend(id);
45
+ let \u8FDE\u63A5 = this.\u8FDE\u63A5\u8868[id];
46
+ if (\u8FDE\u63A5 === void 0) {
47
+ await log.error(`\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5`);
48
+ return;
49
+ }
50
+ if (\u8FDE\u63A5.\u5DF2\u9519\u8BEF === true) {
51
+ await log.error(`\u8FDE\u63A5\u5DF2\u88AB\u6807\u8BB0\u4E3A\u9519\u8BEF, \u65AD\u5F00\u8FDE\u63A5.`);
52
+ clearTimeout(\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668);
53
+ await this.\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, 1011, "\u53D1\u751F\u9519\u8BEF");
54
+ return;
55
+ }
56
+ if (\u8FDE\u63A5.\u5DF2\u5B8C\u6210 === true && \u8FDE\u63A5.\u7F13\u5B58.length === 0) {
57
+ await log.debug(`\u8FDE\u63A5\u5DF2\u5B8C\u6210, \u6B63\u5E38\u5173\u95ED.`);
58
+ await this.\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, 1e3, "\u6B63\u5E38\u5173\u95ED");
59
+ return;
60
+ }
61
+ if (\u8FDE\u63A5.\u5DF2\u65AD\u5F00 === false) {
62
+ clearTimeout(\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668);
63
+ }
64
+ if (\u8FDE\u63A5.\u5DF2\u65AD\u5F00 === true) {
65
+ await log.debug("\u8FDE\u63A5\u5DF2\u65AD\u5F00, \u7B49\u5F85\u5BA2\u6237\u7AEF\u91CD\u8FDE.");
66
+ let \u8D85\u65F6\u65F6\u95F4 = 3e4;
67
+ clearTimeout(\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668);
68
+ \u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668 = setTimeout(async () => {
69
+ if (this.\u8FDE\u63A5\u8868[id]?.\u5DF2\u65AD\u5F00 === true) {
70
+ await log.error("\u5BA2\u6237\u7AEF\u8D85\u65F6\u672A\u91CD\u8FDE\uFF0C\u6E05\u7406\u8FDE\u63A5.");
71
+ await this.\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, 1011, "\u5BA2\u6237\u7AEF\u8D85\u65F6\u672A\u91CD\u8FDE\uFF0C\u6E05\u7406\u8FDE\u63A5");
72
+ }
73
+ }, \u8D85\u65F6\u65F6\u95F4);
74
+ }
37
75
  }
38
- async \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(id) {
39
- return this.\u8FDE\u63A5\u8868.hasOwnProperty(id) ? true : false;
76
+ async \u589E\u52A0\u6216\u66FF\u6362\u8FDE\u63A5(id, ws) {
77
+ let log = (await this.log).extend("\u589E\u52A0\u6216\u66FF\u6362\u8FDE\u63A5").extend(id);
78
+ if (this.\u8FDE\u63A5\u8868[id] === void 0) {
79
+ this.\u8FDE\u63A5\u8868[id] = {
80
+ ws,
81
+ \u7F13\u5B58: [],
82
+ \u5DF2\u5B8C\u6210: false,
83
+ \u5DF2\u65AD\u5F00: false,
84
+ \u5DF2\u9519\u8BEF: false,
85
+ \u6570\u636E\u53D1\u9001\u4E2D: false,
86
+ \u7F13\u5B58\u53D1\u9001\u4E2D: false
87
+ };
88
+ return;
89
+ }
90
+ let \u65E7\u53E5\u67C4 = this.\u8FDE\u63A5\u8868[id].ws;
91
+ await log.info("\u65E7\u8FDE\u63A5\u5B58\u5728, \u5C06\u66FF\u6362\u8868\u4E2D\u6570\u636E, \u5E76\u5173\u95ED\u65E7ws\u53E5\u67C4.");
92
+ this.\u8FDE\u63A5\u8868[id].ws = ws;
93
+ this.\u8FDE\u63A5\u8868[id].\u5DF2\u5B8C\u6210 = false;
94
+ this.\u8FDE\u63A5\u8868[id].\u5DF2\u65AD\u5F00 = false;
95
+ this.\u8FDE\u63A5\u8868[id].\u5DF2\u9519\u8BEF = false;
96
+ this.\u8FDE\u63A5\u8868[id].\u6570\u636E\u53D1\u9001\u4E2D = false;
97
+ this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58\u53D1\u9001\u4E2D = false;
98
+ \u65E7\u53E5\u67C4?.close(1006, "\u65B0\u8FDE\u63A5\u66FF\u6362\u65E7\u8FDE\u63A5");
99
+ await log.info("\u53D1\u9001\u65E7\u8FDE\u63A5\u7F13\u5B58");
100
+ this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58\u53D1\u9001\u4E2D = true;
101
+ while (this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58.length !== 0) {
102
+ await this.\u53D1\u9001\u4FE1\u606F_\u5185\u90E8(id, this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58.shift());
103
+ }
104
+ this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58\u53D1\u9001\u4E2D = false;
105
+ await log.info("\u53D1\u9001\u65E7\u8FDE\u63A5\u7F13\u5B58\u5B8C\u6210");
40
106
  }
41
107
  async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(id, \u6E05\u7406\u51FD\u6570) {
42
- if (this.\u8FDE\u63A5\u8868.hasOwnProperty(id) === false)
108
+ let log = (await this.log).extend("\u8BBE\u7F6E\u6E05\u7406\u51FD\u6570").extend(id);
109
+ if (this.\u8FDE\u63A5\u8868[id] === void 0) {
110
+ await log.error(`\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5`);
43
111
  return;
44
- this.\u6E05\u7406\u51FD\u6570\u8868[id] = \u6E05\u7406\u51FD\u6570;
112
+ }
113
+ this.\u8FDE\u63A5\u8868[id].\u6E05\u7406\u51FD\u6570 = \u6E05\u7406\u51FD\u6570;
45
114
  }
46
- async \u83B7\u5F97\u53E5\u67C4(id) {
47
- return this.\u8FDE\u63A5\u8868[id] ?? null;
115
+ async \u53D1\u9001\u4FE1\u606F_\u5185\u90E8(id, data) {
116
+ let log = (await this.log).extend("\u53D1\u9001\u4FE1\u606F(\u5185\u90E8)").extend(id);
117
+ while (this.\u8FDE\u63A5\u8868[id]?.\u6570\u636E\u53D1\u9001\u4E2D === true) {
118
+ await log.info("\u6570\u636E\u53D1\u9001\u4E2D, \u5C06\u9000\u907F.");
119
+ let \u9000\u907F\u65F6\u95F4 = 100;
120
+ await new Promise((res, _rej) => setTimeout(() => res(), \u9000\u907F\u65F6\u95F4));
121
+ }
122
+ let \u8FDE\u63A5 = this.\u8FDE\u63A5\u8868[id];
123
+ if (\u8FDE\u63A5 === void 0) {
124
+ await log.error("\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5");
125
+ return;
126
+ }
127
+ await new Promise((res, rej) => {
128
+ \u8FDE\u63A5.\u6570\u636E\u53D1\u9001\u4E2D = true;
129
+ let ws\u53E5\u67C4 = \u8FDE\u63A5.ws;
130
+ if (ws\u53E5\u67C4 === null) {
131
+ log.error("\u65E0\u6CD5\u627E\u5230ws\u53E5\u67C4").catch(console.error);
132
+ return;
133
+ }
134
+ ws\u53E5\u67C4.send(JSON.stringify(data), (err) => {
135
+ if ((err ?? null) !== null) {
136
+ log.error(err).catch(console.error);
137
+ return rej(err);
138
+ }
139
+ log.debug("WebSocket \u4FE1\u606F\u53D1\u9001\u6210\u529F").catch(console.error);
140
+ return res();
141
+ });
142
+ }).finally(() => {
143
+ \u8FDE\u63A5.\u6570\u636E\u53D1\u9001\u4E2D = false;
144
+ });
48
145
  }
49
- async \u5220\u9664\u8FDE\u63A5(id) {
50
- let \u6E05\u7406\u51FD\u6570 = this.\u6E05\u7406\u51FD\u6570\u8868[id];
51
- await \u6E05\u7406\u51FD\u6570?.();
52
- delete this.\u8FDE\u63A5\u8868[id];
53
- delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
146
+ async \u53D1\u9001\u4FE1\u606F(id, data) {
147
+ let log = (await this.log).extend("\u53D1\u9001\u4FE1\u606F").extend(id);
148
+ if (this.\u8FDE\u63A5\u8868[id]?.\u5DF2\u5B8C\u6210 === true) {
149
+ await log.error("\u8FDE\u63A5\u5DF2\u5B8C\u6210, \u65E0\u6CD5\u53D1\u9001\u6570\u636E.");
150
+ return;
151
+ }
152
+ if (this.\u8FDE\u63A5\u8868[id]?.\u5DF2\u65AD\u5F00 === true) {
153
+ await log.error("\u8FDE\u63A5\u5DF2\u65AD\u5F00, \u5C06\u7F13\u5B58\u6570\u636E.");
154
+ this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58.push(data);
155
+ return;
156
+ }
157
+ while (this.\u8FDE\u63A5\u8868[id]?.\u7F13\u5B58\u53D1\u9001\u4E2D === true) {
158
+ await log.info("\u7F13\u5B58\u53D1\u9001\u4E2D, \u5C06\u9000\u907F.");
159
+ let \u9000\u907F\u65F6\u95F4 = 100;
160
+ await new Promise((res, _rej) => setTimeout(() => res(), \u9000\u907F\u65F6\u95F4));
161
+ }
162
+ await this.\u53D1\u9001\u4FE1\u606F_\u5185\u90E8(id, data);
163
+ }
164
+ async \u6807\u8BB0\u8FDE\u63A5\u5DF2\u5B8C\u6210(id) {
165
+ if (this.\u8FDE\u63A5\u8868[id] === void 0)
166
+ return;
167
+ this.\u8FDE\u63A5\u8868[id].\u5DF2\u5B8C\u6210 = true;
168
+ await this.\u9500\u6BC1\u5224\u5B9A(id);
169
+ }
170
+ async \u6807\u8BB0\u8FDE\u63A5\u5DF2\u65AD\u5F00(id) {
171
+ if (this.\u8FDE\u63A5\u8868[id] === void 0)
172
+ return;
173
+ this.\u8FDE\u63A5\u8868[id].\u5DF2\u65AD\u5F00 = true;
174
+ await this.\u9500\u6BC1\u5224\u5B9A(id);
175
+ }
176
+ async \u53D6\u6D88\u6807\u8BB0\u8FDE\u63A5\u5DF2\u65AD\u5F00(id) {
177
+ if (this.\u8FDE\u63A5\u8868[id] === void 0)
178
+ return;
179
+ this.\u8FDE\u63A5\u8868[id].\u5DF2\u65AD\u5F00 = false;
180
+ await this.\u9500\u6BC1\u5224\u5B9A(id);
181
+ }
182
+ async \u6807\u8BB0\u8FDE\u63A5\u5DF2\u9519\u8BEF(id) {
183
+ if (this.\u8FDE\u63A5\u8868[id] === void 0)
184
+ return;
185
+ this.\u8FDE\u63A5\u8868[id].\u5DF2\u9519\u8BEF = true;
186
+ await this.\u9500\u6BC1\u5224\u5B9A(id);
54
187
  }
55
188
  };
56
189
 
@@ -59,8 +192,8 @@ var Global = new import_ts_global.GlobalService([
59
192
  new import_ts_global.GlobalAsyncItem("log", async () => {
60
193
  return new import_ts_log.Log("@lsby:net-core");
61
194
  }),
62
- new import_ts_global.GlobalAsyncItem("WebSocket\u7BA1\u7406\u8005", async () => {
63
- return new WebSocket\u7BA1\u7406\u8005({});
195
+ new import_ts_global.GlobalAsyncItem("WebSocket\u7BA1\u7406\u5668", async () => {
196
+ return new WebSocket\u7BA1\u7406\u5668();
64
197
  })
65
198
  ]);
66
199
  // Annotate the CommonJS export names for ESM import in node:
@@ -1,8 +1,8 @@
1
1
  import { GlobalService, GlobalAsyncItem } from '@lsby/ts-global';
2
2
  import { Log } from '@lsby/ts-log';
3
- import { WebSocket管理者 as WebSocket___ } from './ws.cjs';
3
+ import { WebSocket管理器 as WebSocket___ } from './web-socket-management.cjs';
4
4
  import 'ws';
5
5
 
6
- declare let Global: GlobalService<[GlobalAsyncItem<"log", Log>, GlobalAsyncItem<"WebSocket管理者", WebSocket___>]>;
6
+ declare let Global: GlobalService<[GlobalAsyncItem<"log", Log>, GlobalAsyncItem<"WebSocket管理器", WebSocket___>]>;
7
7
 
8
8
  export { Global };
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/global/web-socket-management.ts
21
+ var web_socket_management_exports = {};
22
+ __export(web_socket_management_exports, {
23
+ WebSocket\u7BA1\u7406\u5668: () => WebSocket\u7BA1\u7406\u5668
24
+ });
25
+ module.exports = __toCommonJS(web_socket_management_exports);
26
+
27
+ // src/global/global.ts
28
+ var import_ts_global = require("@lsby/ts-global");
29
+ var import_ts_log = require("@lsby/ts-log");
30
+ var Global = new import_ts_global.GlobalService([
31
+ new import_ts_global.GlobalAsyncItem("log", async () => {
32
+ return new import_ts_log.Log("@lsby:net-core");
33
+ }),
34
+ new import_ts_global.GlobalAsyncItem("WebSocket\u7BA1\u7406\u5668", async () => {
35
+ return new WebSocket\u7BA1\u7406\u5668();
36
+ })
37
+ ]);
38
+
39
+ // src/global/web-socket-management.ts
40
+ var WebSocket\u7BA1\u7406\u5668 = class {
41
+ log = Global.getItem("log").then((a) => a.extend("WebSocket\u7BA1\u7406\u5668"));
42
+ \u8FDE\u63A5\u8868 = {};
43
+ async \u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, code, \u8BF4\u660E) {
44
+ let log = (await this.log).extend("\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5").extend(id);
45
+ try {
46
+ await this.\u8FDE\u63A5\u8868[id]?.\u6E05\u7406\u51FD\u6570?.();
47
+ } catch (err) {
48
+ await log.error(`\u6267\u884C\u6E05\u7406\u51FD\u6570\u5931\u8D25: %o.`, String(err));
49
+ }
50
+ this.\u8FDE\u63A5\u8868[id]?.ws?.close(code, \u8BF4\u660E);
51
+ delete this.\u8FDE\u63A5\u8868[id];
52
+ }
53
+ async \u9500\u6BC1\u5224\u5B9A(id) {
54
+ let log = (await this.log).extend("\u9500\u6BC1\u5224\u5B9A").extend(id);
55
+ let \u8FDE\u63A5 = this.\u8FDE\u63A5\u8868[id];
56
+ if (\u8FDE\u63A5 === void 0) {
57
+ await log.error(`\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5`);
58
+ return;
59
+ }
60
+ if (\u8FDE\u63A5.\u5DF2\u9519\u8BEF === true) {
61
+ await log.error(`\u8FDE\u63A5\u5DF2\u88AB\u6807\u8BB0\u4E3A\u9519\u8BEF, \u65AD\u5F00\u8FDE\u63A5.`);
62
+ clearTimeout(\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668);
63
+ await this.\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, 1011, "\u53D1\u751F\u9519\u8BEF");
64
+ return;
65
+ }
66
+ if (\u8FDE\u63A5.\u5DF2\u5B8C\u6210 === true && \u8FDE\u63A5.\u7F13\u5B58.length === 0) {
67
+ await log.debug(`\u8FDE\u63A5\u5DF2\u5B8C\u6210, \u6B63\u5E38\u5173\u95ED.`);
68
+ await this.\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, 1e3, "\u6B63\u5E38\u5173\u95ED");
69
+ return;
70
+ }
71
+ if (\u8FDE\u63A5.\u5DF2\u65AD\u5F00 === false) {
72
+ clearTimeout(\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668);
73
+ }
74
+ if (\u8FDE\u63A5.\u5DF2\u65AD\u5F00 === true) {
75
+ await log.debug("\u8FDE\u63A5\u5DF2\u65AD\u5F00, \u7B49\u5F85\u5BA2\u6237\u7AEF\u91CD\u8FDE.");
76
+ let \u8D85\u65F6\u65F6\u95F4 = 3e4;
77
+ clearTimeout(\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668);
78
+ \u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668 = setTimeout(async () => {
79
+ if (this.\u8FDE\u63A5\u8868[id]?.\u5DF2\u65AD\u5F00 === true) {
80
+ await log.error("\u5BA2\u6237\u7AEF\u8D85\u65F6\u672A\u91CD\u8FDE\uFF0C\u6E05\u7406\u8FDE\u63A5.");
81
+ await this.\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, 1011, "\u5BA2\u6237\u7AEF\u8D85\u65F6\u672A\u91CD\u8FDE\uFF0C\u6E05\u7406\u8FDE\u63A5");
82
+ }
83
+ }, \u8D85\u65F6\u65F6\u95F4);
84
+ }
85
+ }
86
+ async \u589E\u52A0\u6216\u66FF\u6362\u8FDE\u63A5(id, ws) {
87
+ let log = (await this.log).extend("\u589E\u52A0\u6216\u66FF\u6362\u8FDE\u63A5").extend(id);
88
+ if (this.\u8FDE\u63A5\u8868[id] === void 0) {
89
+ this.\u8FDE\u63A5\u8868[id] = {
90
+ ws,
91
+ \u7F13\u5B58: [],
92
+ \u5DF2\u5B8C\u6210: false,
93
+ \u5DF2\u65AD\u5F00: false,
94
+ \u5DF2\u9519\u8BEF: false,
95
+ \u6570\u636E\u53D1\u9001\u4E2D: false,
96
+ \u7F13\u5B58\u53D1\u9001\u4E2D: false
97
+ };
98
+ return;
99
+ }
100
+ let \u65E7\u53E5\u67C4 = this.\u8FDE\u63A5\u8868[id].ws;
101
+ await log.info("\u65E7\u8FDE\u63A5\u5B58\u5728, \u5C06\u66FF\u6362\u8868\u4E2D\u6570\u636E, \u5E76\u5173\u95ED\u65E7ws\u53E5\u67C4.");
102
+ this.\u8FDE\u63A5\u8868[id].ws = ws;
103
+ this.\u8FDE\u63A5\u8868[id].\u5DF2\u5B8C\u6210 = false;
104
+ this.\u8FDE\u63A5\u8868[id].\u5DF2\u65AD\u5F00 = false;
105
+ this.\u8FDE\u63A5\u8868[id].\u5DF2\u9519\u8BEF = false;
106
+ this.\u8FDE\u63A5\u8868[id].\u6570\u636E\u53D1\u9001\u4E2D = false;
107
+ this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58\u53D1\u9001\u4E2D = false;
108
+ \u65E7\u53E5\u67C4?.close(1006, "\u65B0\u8FDE\u63A5\u66FF\u6362\u65E7\u8FDE\u63A5");
109
+ await log.info("\u53D1\u9001\u65E7\u8FDE\u63A5\u7F13\u5B58");
110
+ this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58\u53D1\u9001\u4E2D = true;
111
+ while (this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58.length !== 0) {
112
+ await this.\u53D1\u9001\u4FE1\u606F_\u5185\u90E8(id, this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58.shift());
113
+ }
114
+ this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58\u53D1\u9001\u4E2D = false;
115
+ await log.info("\u53D1\u9001\u65E7\u8FDE\u63A5\u7F13\u5B58\u5B8C\u6210");
116
+ }
117
+ async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(id, \u6E05\u7406\u51FD\u6570) {
118
+ let log = (await this.log).extend("\u8BBE\u7F6E\u6E05\u7406\u51FD\u6570").extend(id);
119
+ if (this.\u8FDE\u63A5\u8868[id] === void 0) {
120
+ await log.error(`\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5`);
121
+ return;
122
+ }
123
+ this.\u8FDE\u63A5\u8868[id].\u6E05\u7406\u51FD\u6570 = \u6E05\u7406\u51FD\u6570;
124
+ }
125
+ async \u53D1\u9001\u4FE1\u606F_\u5185\u90E8(id, data) {
126
+ let log = (await this.log).extend("\u53D1\u9001\u4FE1\u606F(\u5185\u90E8)").extend(id);
127
+ while (this.\u8FDE\u63A5\u8868[id]?.\u6570\u636E\u53D1\u9001\u4E2D === true) {
128
+ await log.info("\u6570\u636E\u53D1\u9001\u4E2D, \u5C06\u9000\u907F.");
129
+ let \u9000\u907F\u65F6\u95F4 = 100;
130
+ await new Promise((res, _rej) => setTimeout(() => res(), \u9000\u907F\u65F6\u95F4));
131
+ }
132
+ let \u8FDE\u63A5 = this.\u8FDE\u63A5\u8868[id];
133
+ if (\u8FDE\u63A5 === void 0) {
134
+ await log.error("\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5");
135
+ return;
136
+ }
137
+ await new Promise((res, rej) => {
138
+ \u8FDE\u63A5.\u6570\u636E\u53D1\u9001\u4E2D = true;
139
+ let ws\u53E5\u67C4 = \u8FDE\u63A5.ws;
140
+ if (ws\u53E5\u67C4 === null) {
141
+ log.error("\u65E0\u6CD5\u627E\u5230ws\u53E5\u67C4").catch(console.error);
142
+ return;
143
+ }
144
+ ws\u53E5\u67C4.send(JSON.stringify(data), (err) => {
145
+ if ((err ?? null) !== null) {
146
+ log.error(err).catch(console.error);
147
+ return rej(err);
148
+ }
149
+ log.debug("WebSocket \u4FE1\u606F\u53D1\u9001\u6210\u529F").catch(console.error);
150
+ return res();
151
+ });
152
+ }).finally(() => {
153
+ \u8FDE\u63A5.\u6570\u636E\u53D1\u9001\u4E2D = false;
154
+ });
155
+ }
156
+ async \u53D1\u9001\u4FE1\u606F(id, data) {
157
+ let log = (await this.log).extend("\u53D1\u9001\u4FE1\u606F").extend(id);
158
+ if (this.\u8FDE\u63A5\u8868[id]?.\u5DF2\u5B8C\u6210 === true) {
159
+ await log.error("\u8FDE\u63A5\u5DF2\u5B8C\u6210, \u65E0\u6CD5\u53D1\u9001\u6570\u636E.");
160
+ return;
161
+ }
162
+ if (this.\u8FDE\u63A5\u8868[id]?.\u5DF2\u65AD\u5F00 === true) {
163
+ await log.error("\u8FDE\u63A5\u5DF2\u65AD\u5F00, \u5C06\u7F13\u5B58\u6570\u636E.");
164
+ this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58.push(data);
165
+ return;
166
+ }
167
+ while (this.\u8FDE\u63A5\u8868[id]?.\u7F13\u5B58\u53D1\u9001\u4E2D === true) {
168
+ await log.info("\u7F13\u5B58\u53D1\u9001\u4E2D, \u5C06\u9000\u907F.");
169
+ let \u9000\u907F\u65F6\u95F4 = 100;
170
+ await new Promise((res, _rej) => setTimeout(() => res(), \u9000\u907F\u65F6\u95F4));
171
+ }
172
+ await this.\u53D1\u9001\u4FE1\u606F_\u5185\u90E8(id, data);
173
+ }
174
+ async \u6807\u8BB0\u8FDE\u63A5\u5DF2\u5B8C\u6210(id) {
175
+ if (this.\u8FDE\u63A5\u8868[id] === void 0)
176
+ return;
177
+ this.\u8FDE\u63A5\u8868[id].\u5DF2\u5B8C\u6210 = true;
178
+ await this.\u9500\u6BC1\u5224\u5B9A(id);
179
+ }
180
+ async \u6807\u8BB0\u8FDE\u63A5\u5DF2\u65AD\u5F00(id) {
181
+ if (this.\u8FDE\u63A5\u8868[id] === void 0)
182
+ return;
183
+ this.\u8FDE\u63A5\u8868[id].\u5DF2\u65AD\u5F00 = true;
184
+ await this.\u9500\u6BC1\u5224\u5B9A(id);
185
+ }
186
+ async \u53D6\u6D88\u6807\u8BB0\u8FDE\u63A5\u5DF2\u65AD\u5F00(id) {
187
+ if (this.\u8FDE\u63A5\u8868[id] === void 0)
188
+ return;
189
+ this.\u8FDE\u63A5\u8868[id].\u5DF2\u65AD\u5F00 = false;
190
+ await this.\u9500\u6BC1\u5224\u5B9A(id);
191
+ }
192
+ async \u6807\u8BB0\u8FDE\u63A5\u5DF2\u9519\u8BEF(id) {
193
+ if (this.\u8FDE\u63A5\u8868[id] === void 0)
194
+ return;
195
+ this.\u8FDE\u63A5\u8868[id].\u5DF2\u9519\u8BEF = true;
196
+ await this.\u9500\u6BC1\u5224\u5B9A(id);
197
+ }
198
+ };
199
+ // Annotate the CommonJS export names for ESM import in node:
200
+ 0 && (module.exports = {
201
+ WebSocket\u7BA1\u7406\u5668
202
+ });
@@ -0,0 +1,18 @@
1
+ import { WebSocket } from 'ws';
2
+
3
+ declare class WebSocket管理器 {
4
+ private log;
5
+ private 连接表;
6
+ private 关闭并删除连接;
7
+ private 销毁判定;
8
+ 增加或替换连接(id: string, ws: WebSocket): Promise<void>;
9
+ 设置清理函数(id: string, 清理函数: () => Promise<void>): Promise<void>;
10
+ private 发送信息_内部;
11
+ 发送信息(id: string, data: any): Promise<void>;
12
+ 标记连接已完成(id: string): Promise<void>;
13
+ 标记连接已断开(id: string): Promise<void>;
14
+ 取消标记连接已断开(id: string): Promise<void>;
15
+ 标记连接已错误(id: string): Promise<void>;
16
+ }
17
+
18
+ export { WebSocket管理器 };