@lsby/net-core 0.7.0 → 0.7.1
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 +26 -148
- package/dist/cjs/global/web-socket-management.cjs +26 -148
- package/dist/cjs/global/web-socket-management.d.cts +8 -10
- package/dist/cjs/help/help.cjs +2 -27
- package/dist/cjs/help/help.d.cts +1 -16
- package/dist/cjs/help/interior.cjs +52 -0
- package/dist/cjs/help/interior.d.cts +17 -0
- package/dist/cjs/index.cjs +97 -197
- package/dist/cjs/index.d.cts +3 -2
- package/dist/cjs/interface/interface-base.d.cts +2 -2
- package/dist/cjs/interface/interface-logic.cjs +1 -1
- package/dist/cjs/interface/interface-logic.d.cts +2 -2
- package/dist/cjs/interface/interface-result.d.cts +2 -2
- package/dist/{esm/interface-base-52hTGKAQ.d.ts → cjs/interface-base-CBN3QoUN.d.cts} +1 -1
- package/dist/cjs/plugin/extend/chinese-path.d.cts +2 -2
- package/dist/cjs/plugin/extend/custom-data.cjs +26 -148
- package/dist/cjs/plugin/extend/custom-data.d.cts +2 -2
- package/dist/cjs/plugin/extend/json.cjs +1 -1
- package/dist/cjs/plugin/extend/json.d.cts +2 -2
- package/dist/cjs/plugin/extend/log-headers.d.cts +2 -2
- package/dist/cjs/plugin/extend/query.cjs +1 -1
- package/dist/cjs/plugin/extend/query.d.cts +2 -2
- package/dist/cjs/plugin/extend/send-file-plugin.d.cts +2 -2
- package/dist/cjs/plugin/extend/urlencoded.cjs +26 -148
- package/dist/cjs/plugin/extend/urlencoded.d.cts +2 -2
- package/dist/cjs/plugin/extend/web-socket.cjs +46 -150
- package/dist/cjs/plugin/extend/web-socket.d.cts +2 -2
- package/dist/cjs/plugin/plug.d.cts +2 -2
- package/dist/cjs/server/server.cjs +49 -167
- package/dist/cjs/server/server.d.cts +2 -2
- package/dist/cjs/wrapper/common-wrapper.d.cts +2 -2
- package/dist/cjs/wrapper/deferred-result-wrapper.d.cts +2 -2
- package/dist/esm/{chunk-FDEUJJA6.js → chunk-2I2MJFB2.js} +1 -1
- package/dist/esm/{chunk-4AXMR5NB.js → chunk-2JQ7AEO4.js} +1 -1
- package/dist/esm/chunk-AB3GCWSG.js +55 -0
- package/dist/esm/{chunk-JB4HVEXB.js → chunk-G6IT6LW7.js} +1 -1
- package/dist/esm/{chunk-RYGSLVLS.js → chunk-NMG5C5AS.js} +1 -9
- package/dist/esm/{chunk-PW4C7Y5B.js → chunk-QXHAH6TU.js} +26 -22
- package/dist/esm/{chunk-47MYYUQZ.js → chunk-RHDBIJPA.js} +1 -1
- package/dist/esm/{chunk-XPC3O5HH.js → chunk-UMOKW2FY.js} +21 -3
- package/dist/esm/chunk-YMH6HJJF.js +12 -0
- package/dist/esm/{chunk-BD3TBYRH.js → chunk-YMW7PURV.js} +1 -1
- package/dist/esm/global/global.js +1 -1
- package/dist/esm/global/web-socket-management.d.ts +8 -10
- package/dist/esm/global/web-socket-management.js +1 -1
- package/dist/esm/help/help.d.ts +1 -16
- package/dist/esm/help/help.js +3 -7
- package/dist/esm/help/interior.d.ts +17 -0
- package/dist/esm/help/interior.js +8 -0
- package/dist/esm/index.d.ts +3 -2
- package/dist/esm/index.js +24 -27
- package/dist/esm/interface/interface-base.d.ts +2 -2
- package/dist/esm/interface/interface-logic.d.ts +2 -2
- package/dist/esm/interface/interface-logic.js +1 -1
- package/dist/esm/interface/interface-result.d.ts +2 -2
- package/dist/{cjs/interface-base-CNHVr8eR.d.cts → esm/interface-base-D8Jo2TEo.d.ts} +1 -1
- package/dist/esm/plugin/extend/chinese-path.d.ts +2 -2
- package/dist/esm/plugin/extend/custom-data.d.ts +2 -2
- package/dist/esm/plugin/extend/custom-data.js +2 -2
- package/dist/esm/plugin/extend/json.d.ts +2 -2
- package/dist/esm/plugin/extend/json.js +2 -2
- package/dist/esm/plugin/extend/log-headers.d.ts +2 -2
- package/dist/esm/plugin/extend/query.d.ts +2 -2
- package/dist/esm/plugin/extend/query.js +2 -2
- package/dist/esm/plugin/extend/send-file-plugin.d.ts +2 -2
- package/dist/esm/plugin/extend/urlencoded.d.ts +2 -2
- package/dist/esm/plugin/extend/urlencoded.js +2 -2
- package/dist/esm/plugin/extend/web-socket.d.ts +2 -2
- package/dist/esm/plugin/extend/web-socket.js +2 -2
- package/dist/esm/plugin/plug.d.ts +2 -2
- package/dist/esm/server/server.d.ts +2 -2
- package/dist/esm/server/server.js +3 -3
- package/dist/esm/wrapper/common-wrapper.d.ts +2 -2
- package/dist/esm/wrapper/common-wrapper.js +2 -2
- package/dist/esm/wrapper/deferred-result-wrapper.d.ts +2 -2
- package/dist/esm/wrapper/deferred-result-wrapper.js +2 -2
- package/package.json +1 -1
- package/dist/esm/chunk-LDWZKZLU.js +0 -177
- package/dist/esm/{chunk-JLHGWUH6.js → chunk-FHU5AZWT.js} +3 -3
- package/dist/esm/{chunk-FEURUNOT.js → chunk-WYJFP5V5.js} +3 -3
|
@@ -31,162 +31,40 @@ var import_ts_log = require("@lsby/ts-log");
|
|
|
31
31
|
|
|
32
32
|
// src/global/web-socket-management.ts
|
|
33
33
|
var WebSocket\u7BA1\u7406\u5668 = class {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
async \u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, code, \u8BF4\u660E) {
|
|
37
|
-
let log = (await this.log).extend(id).extend("\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5");
|
|
38
|
-
try {
|
|
39
|
-
await this.\u8FDE\u63A5\u8868[id]?.\u6E05\u7406\u51FD\u6570?.();
|
|
40
|
-
} catch (err) {
|
|
41
|
-
await log.error(`\u6267\u884C\u6E05\u7406\u51FD\u6570\u5931\u8D25: %o.`, String(err));
|
|
42
|
-
}
|
|
43
|
-
this.\u8FDE\u63A5\u8868[id]?.ws?.close(code, \u8BF4\u660E);
|
|
44
|
-
delete this.\u8FDE\u63A5\u8868[id];
|
|
34
|
+
constructor(\u8FDE\u63A5\u8868) {
|
|
35
|
+
this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
|
|
45
36
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
await log.error(`\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5`);
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
if (\u8FDE\u63A5.\u5DF2\u9519\u8BEF === true) {
|
|
54
|
-
await log.error(`\u8FDE\u63A5\u5DF2\u88AB\u6807\u8BB0\u4E3A\u9519\u8BEF, \u65AD\u5F00\u8FDE\u63A5.`);
|
|
55
|
-
clearTimeout(\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668);
|
|
56
|
-
await this.\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, 1011, "\u53D1\u751F\u9519\u8BEF");
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
if (\u8FDE\u63A5.\u5DF2\u5B8C\u6210 === true && \u8FDE\u63A5.\u7F13\u5B58.length === 0) {
|
|
60
|
-
await log.debug(`\u8FDE\u63A5\u5DF2\u5B8C\u6210, \u6B63\u5E38\u5173\u95ED.`);
|
|
61
|
-
await this.\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, 1e3, "\u6B63\u5E38\u5173\u95ED");
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
if (\u8FDE\u63A5.\u5DF2\u65AD\u5F00 === false) {
|
|
65
|
-
clearTimeout(\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668);
|
|
66
|
-
}
|
|
67
|
-
if (\u8FDE\u63A5.\u5DF2\u65AD\u5F00 === true) {
|
|
68
|
-
await log.debug("\u8FDE\u63A5\u5DF2\u65AD\u5F00, \u7B49\u5F85\u5BA2\u6237\u7AEF\u91CD\u8FDE.");
|
|
69
|
-
let \u8D85\u65F6\u65F6\u95F4 = 3e4;
|
|
70
|
-
clearTimeout(\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668);
|
|
71
|
-
\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668 = setTimeout(async () => {
|
|
72
|
-
if (this.\u8FDE\u63A5\u8868[id]?.\u5DF2\u65AD\u5F00 === true) {
|
|
73
|
-
await log.error("\u5BA2\u6237\u7AEF\u8D85\u65F6\u672A\u91CD\u8FDE\uFF0C\u6E05\u7406\u8FDE\u63A5.");
|
|
74
|
-
await this.\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, 1011, "\u5BA2\u6237\u7AEF\u8D85\u65F6\u672A\u91CD\u8FDE\uFF0C\u6E05\u7406\u8FDE\u63A5");
|
|
75
|
-
}
|
|
76
|
-
}, \u8D85\u65F6\u65F6\u95F4);
|
|
77
|
-
}
|
|
37
|
+
log = Global.getItem("log").then((a) => a.extend("@lsby:net-core").extend("WebSocket\u7BA1\u7406\u5668"));
|
|
38
|
+
\u6E05\u7406\u51FD\u6570\u8868 = {};
|
|
39
|
+
async \u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
|
|
40
|
+
this.\u8FDE\u63A5\u8868[id] = ws\u53E5\u67C4;
|
|
78
41
|
}
|
|
79
|
-
async \
|
|
80
|
-
|
|
81
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0) {
|
|
82
|
-
this.\u8FDE\u63A5\u8868[id] = {
|
|
83
|
-
ws,
|
|
84
|
-
\u7F13\u5B58: [],
|
|
85
|
-
\u5DF2\u5B8C\u6210: false,
|
|
86
|
-
\u5DF2\u65AD\u5F00: false,
|
|
87
|
-
\u5DF2\u9519\u8BEF: false,
|
|
88
|
-
\u6570\u636E\u53D1\u9001\u4E2D: false,
|
|
89
|
-
\u7F13\u5B58\u53D1\u9001\u4E2D: false
|
|
90
|
-
};
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
let \u65E7\u53E5\u67C4 = this.\u8FDE\u63A5\u8868[id].ws;
|
|
94
|
-
await log.info("\u65E7\u8FDE\u63A5\u5B58\u5728, \u5C06\u66FF\u6362\u8868\u4E2D\u6570\u636E, \u5E76\u5173\u95ED\u65E7ws\u53E5\u67C4.");
|
|
95
|
-
this.\u8FDE\u63A5\u8868[id].ws = ws;
|
|
96
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u5B8C\u6210 = false;
|
|
97
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u65AD\u5F00 = false;
|
|
98
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u9519\u8BEF = false;
|
|
99
|
-
this.\u8FDE\u63A5\u8868[id].\u6570\u636E\u53D1\u9001\u4E2D = false;
|
|
100
|
-
this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58\u53D1\u9001\u4E2D = false;
|
|
101
|
-
\u65E7\u53E5\u67C4?.close(1011, "\u65B0\u8FDE\u63A5\u66FF\u6362\u65E7\u8FDE\u63A5");
|
|
102
|
-
await log.info("\u53D1\u9001\u65E7\u8FDE\u63A5\u7F13\u5B58");
|
|
103
|
-
this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58\u53D1\u9001\u4E2D = true;
|
|
104
|
-
while (this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58.length !== 0) {
|
|
105
|
-
await this.\u53D1\u9001\u4FE1\u606F_\u5185\u90E8(id, this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58.shift());
|
|
106
|
-
}
|
|
107
|
-
this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58\u53D1\u9001\u4E2D = false;
|
|
108
|
-
await log.info("\u53D1\u9001\u65E7\u8FDE\u63A5\u7F13\u5B58\u5B8C\u6210");
|
|
42
|
+
async \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(id) {
|
|
43
|
+
return this.\u8FDE\u63A5\u8868.hasOwnProperty(id) ? true : false;
|
|
109
44
|
}
|
|
110
45
|
async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(id, \u6E05\u7406\u51FD\u6570) {
|
|
111
|
-
|
|
112
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0) {
|
|
113
|
-
await log.error(`\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5`);
|
|
46
|
+
if (this.\u8FDE\u63A5\u8868.hasOwnProperty(id) === false)
|
|
114
47
|
return;
|
|
115
|
-
|
|
116
|
-
this.\u8FDE\u63A5\u8868[id].\u6E05\u7406\u51FD\u6570 = \u6E05\u7406\u51FD\u6570;
|
|
48
|
+
this.\u6E05\u7406\u51FD\u6570\u8868[id] = \u6E05\u7406\u51FD\u6570;
|
|
117
49
|
}
|
|
118
|
-
async \
|
|
119
|
-
|
|
120
|
-
while (this.\u8FDE\u63A5\u8868[id]?.\u6570\u636E\u53D1\u9001\u4E2D === true) {
|
|
121
|
-
await log.info("\u6570\u636E\u53D1\u9001\u4E2D, \u5C06\u9000\u907F.");
|
|
122
|
-
let \u9000\u907F\u65F6\u95F4 = 100;
|
|
123
|
-
await new Promise((res, _rej) => setTimeout(() => res(), \u9000\u907F\u65F6\u95F4));
|
|
124
|
-
}
|
|
125
|
-
let \u8FDE\u63A5 = this.\u8FDE\u63A5\u8868[id];
|
|
126
|
-
if (\u8FDE\u63A5 === void 0) {
|
|
127
|
-
await log.error("\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5");
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
await new Promise((res, rej) => {
|
|
131
|
-
\u8FDE\u63A5.\u6570\u636E\u53D1\u9001\u4E2D = true;
|
|
132
|
-
let ws\u53E5\u67C4 = \u8FDE\u63A5.ws;
|
|
133
|
-
if (ws\u53E5\u67C4 === null) {
|
|
134
|
-
log.error("\u65E0\u6CD5\u627E\u5230ws\u53E5\u67C4").catch(console.error);
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
ws\u53E5\u67C4.send(JSON.stringify(data), (err) => {
|
|
138
|
-
if ((err ?? null) !== null) {
|
|
139
|
-
log.error(err).catch(console.error);
|
|
140
|
-
return rej(err);
|
|
141
|
-
}
|
|
142
|
-
log.debug("WebSocket \u4FE1\u606F\u53D1\u9001\u6210\u529F").catch(console.error);
|
|
143
|
-
return res();
|
|
144
|
-
});
|
|
145
|
-
}).finally(() => {
|
|
146
|
-
\u8FDE\u63A5.\u6570\u636E\u53D1\u9001\u4E2D = false;
|
|
147
|
-
});
|
|
50
|
+
async \u83B7\u5F97\u53E5\u67C4(id) {
|
|
51
|
+
return this.\u8FDE\u63A5\u8868[id] ?? null;
|
|
148
52
|
}
|
|
149
|
-
async \
|
|
150
|
-
let log =
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
await log.error("\u8FDE\u63A5\u5DF2\u65AD\u5F00, \u5C06\u7F13\u5B58\u6570\u636E.");
|
|
157
|
-
this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58.push(data);
|
|
158
|
-
return;
|
|
53
|
+
async \u5220\u9664\u8FDE\u63A5(id) {
|
|
54
|
+
let log = await this.log;
|
|
55
|
+
let \u6E05\u7406\u51FD\u6570 = this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
56
|
+
try {
|
|
57
|
+
this.\u8FDE\u63A5\u8868[id]?.close(1e3, "\u670D\u52A1\u5668\u4E3B\u52A8\u5173\u95ED");
|
|
58
|
+
} catch (err) {
|
|
59
|
+
await log.error(`\u5173\u95ED WebSocket \u53E5\u67C4\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`);
|
|
159
60
|
}
|
|
160
|
-
|
|
161
|
-
await
|
|
162
|
-
|
|
163
|
-
await
|
|
61
|
+
try {
|
|
62
|
+
await \u6E05\u7406\u51FD\u6570?.();
|
|
63
|
+
} catch (err) {
|
|
64
|
+
await log.error(`\u6E05\u7406\u8FDE\u63A5\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`);
|
|
164
65
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
async \u6807\u8BB0\u8FDE\u63A5\u5DF2\u5B8C\u6210(id) {
|
|
168
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0)
|
|
169
|
-
return;
|
|
170
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u5B8C\u6210 = true;
|
|
171
|
-
await this.\u9500\u6BC1\u5224\u5B9A(id);
|
|
172
|
-
}
|
|
173
|
-
async \u6807\u8BB0\u8FDE\u63A5\u5DF2\u65AD\u5F00(id) {
|
|
174
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0)
|
|
175
|
-
return;
|
|
176
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u65AD\u5F00 = true;
|
|
177
|
-
await this.\u9500\u6BC1\u5224\u5B9A(id);
|
|
178
|
-
}
|
|
179
|
-
async \u53D6\u6D88\u6807\u8BB0\u8FDE\u63A5\u5DF2\u65AD\u5F00(id) {
|
|
180
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0)
|
|
181
|
-
return;
|
|
182
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u65AD\u5F00 = false;
|
|
183
|
-
await this.\u9500\u6BC1\u5224\u5B9A(id);
|
|
184
|
-
}
|
|
185
|
-
async \u6807\u8BB0\u8FDE\u63A5\u5DF2\u9519\u8BEF(id) {
|
|
186
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0)
|
|
187
|
-
return;
|
|
188
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u9519\u8BEF = true;
|
|
189
|
-
await this.\u9500\u6BC1\u5224\u5B9A(id);
|
|
66
|
+
delete this.\u8FDE\u63A5\u8868[id];
|
|
67
|
+
delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
190
68
|
}
|
|
191
69
|
};
|
|
192
70
|
|
|
@@ -196,7 +74,7 @@ var Global = new import_ts_global.GlobalService([
|
|
|
196
74
|
return new import_ts_log.Log("@lsby:net-core");
|
|
197
75
|
}),
|
|
198
76
|
new import_ts_global.GlobalAsyncItem("WebSocket\u7BA1\u7406\u5668", async () => {
|
|
199
|
-
return new WebSocket\u7BA1\u7406\u5668();
|
|
77
|
+
return new WebSocket\u7BA1\u7406\u5668({});
|
|
200
78
|
})
|
|
201
79
|
]);
|
|
202
80
|
|
|
@@ -229,6 +107,7 @@ var WebSocket\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
|
|
|
229
107
|
async (req, _res, \u9644\u52A0\u53C2\u6570) => {
|
|
230
108
|
let log = \u9644\u52A0\u53C2\u6570.log.extend("webSocket\u63D2\u4EF6");
|
|
231
109
|
let WebSocket\u7BA1\u7406\u56682 = await Global.getItem("WebSocket\u7BA1\u7406\u5668");
|
|
110
|
+
let ws\u53E5\u67C4 = null;
|
|
232
111
|
let wsId = req.headers["ws-client-id"];
|
|
233
112
|
await log.debug("\u68C0\u67E5 ws-client-id \u5934\u4FE1\u606F", { wsId });
|
|
234
113
|
if (typeof wsId !== "string") {
|
|
@@ -237,15 +116,32 @@ var WebSocket\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
|
|
|
237
116
|
}
|
|
238
117
|
let \u5B58\u5728\u7684wsId = wsId;
|
|
239
118
|
await log.debug("\u5DF2\u83B7\u5F97 WebSocket Id: %o", wsId);
|
|
119
|
+
await log.debug("\u5C1D\u8BD5\u83B7\u53D6 WebSocket \u53E5\u67C4");
|
|
120
|
+
ws\u53E5\u67C4 = await WebSocket\u7BA1\u7406\u56682.\u83B7\u5F97\u53E5\u67C4(\u5B58\u5728\u7684wsId);
|
|
121
|
+
if (ws\u53E5\u67C4 === null) {
|
|
122
|
+
await log.error("\u672A\u80FD\u83B7\u53D6\u5230\u6709\u6548\u7684 WebSocket \u53E5\u67C4");
|
|
123
|
+
return { ws\u64CD\u4F5C: null };
|
|
124
|
+
}
|
|
125
|
+
let \u5B58\u5728\u7684ws\u53E5\u67C4 = ws\u53E5\u67C4;
|
|
126
|
+
await log.debug("WebSocket \u53E5\u67C4\u5DF2\u51C6\u5907\u597D");
|
|
240
127
|
return {
|
|
241
128
|
ws\u64CD\u4F5C: {
|
|
242
129
|
async \u53D1\u9001ws\u4FE1\u606F(\u4FE1\u606F) {
|
|
243
130
|
await log.debug("\u53D1\u9001 WebSocket \u4FE1\u606F: %O", \u4FE1\u606F);
|
|
244
|
-
|
|
131
|
+
return new Promise((res, rej) => {
|
|
132
|
+
\u5B58\u5728\u7684ws\u53E5\u67C4.send(JSON.stringify(\u4FE1\u606F), (err) => {
|
|
133
|
+
if ((err ?? null) !== null) {
|
|
134
|
+
log.error("\u53D1\u9001 WebSocket \u4FE1\u606F\u5931\u8D25: %O", err).catch(console.error);
|
|
135
|
+
return rej(err);
|
|
136
|
+
}
|
|
137
|
+
log.debug("WebSocket \u4FE1\u606F\u53D1\u9001\u6210\u529F").catch(console.error);
|
|
138
|
+
return res();
|
|
139
|
+
});
|
|
140
|
+
});
|
|
245
141
|
},
|
|
246
142
|
async \u5173\u95EDws\u8FDE\u63A5() {
|
|
247
143
|
await log.debug("\u5173\u95ED WebSocket \u8FDE\u63A5");
|
|
248
|
-
await WebSocket\u7BA1\u7406\u56682.\
|
|
144
|
+
await WebSocket\u7BA1\u7406\u56682.\u5220\u9664\u8FDE\u63A5(\u5B58\u5728\u7684wsId);
|
|
249
145
|
},
|
|
250
146
|
async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(\u6E05\u7406\u51FD\u6570) {
|
|
251
147
|
await WebSocket\u7BA1\u7406\u56682.\u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(\u5B58\u5728\u7684wsId, \u6E05\u7406\u51FD\u6570);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { 插 as __, 包 as _____, y as _____$1, z as _Task____ } from '../../interface-base-
|
|
2
|
+
import { 插 as __, 包 as _____, y as _____$1, z as _Task____ } from '../../interface-base-CBN3QoUN.cjs';
|
|
3
3
|
import '@lsby/ts-fp-data';
|
|
4
4
|
import 'express';
|
|
5
|
-
import '../../help/
|
|
5
|
+
import '../../help/interior.cjs';
|
|
6
6
|
import '@lsby/ts-log';
|
|
7
7
|
import 'node:http';
|
|
8
8
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import '@lsby/ts-fp-data';
|
|
2
2
|
import 'express';
|
|
3
3
|
import 'zod';
|
|
4
|
-
export { x as 任意插件, 包 as 包装插件项, 取 as 取Task插件内部类型, z as 取Task插件类型, A as 取插件内部ts类型, 合 as 合并插件结果, 插 as 插件, y as 插件项类型 } from '../interface-base-
|
|
5
|
-
import '../help/
|
|
4
|
+
export { x as 任意插件, 包 as 包装插件项, 取 as 取Task插件内部类型, z as 取Task插件类型, A as 取插件内部ts类型, 合 as 合并插件结果, 插 as 插件, y as 插件项类型 } from '../interface-base-CBN3QoUN.cjs';
|
|
5
|
+
import '../help/interior.cjs';
|
|
6
6
|
import '@lsby/ts-log';
|
|
7
7
|
import 'node:http';
|
|
@@ -45,162 +45,40 @@ var import_ts_log = require("@lsby/ts-log");
|
|
|
45
45
|
|
|
46
46
|
// src/global/web-socket-management.ts
|
|
47
47
|
var WebSocket\u7BA1\u7406\u5668 = class {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
async \u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, code, \u8BF4\u660E) {
|
|
51
|
-
let log = (await this.log).extend(id).extend("\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5");
|
|
52
|
-
try {
|
|
53
|
-
await this.\u8FDE\u63A5\u8868[id]?.\u6E05\u7406\u51FD\u6570?.();
|
|
54
|
-
} catch (err) {
|
|
55
|
-
await log.error(`\u6267\u884C\u6E05\u7406\u51FD\u6570\u5931\u8D25: %o.`, String(err));
|
|
56
|
-
}
|
|
57
|
-
this.\u8FDE\u63A5\u8868[id]?.ws?.close(code, \u8BF4\u660E);
|
|
58
|
-
delete this.\u8FDE\u63A5\u8868[id];
|
|
48
|
+
constructor(\u8FDE\u63A5\u8868) {
|
|
49
|
+
this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
|
|
59
50
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
await log.error(`\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5`);
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
if (\u8FDE\u63A5.\u5DF2\u9519\u8BEF === true) {
|
|
68
|
-
await log.error(`\u8FDE\u63A5\u5DF2\u88AB\u6807\u8BB0\u4E3A\u9519\u8BEF, \u65AD\u5F00\u8FDE\u63A5.`);
|
|
69
|
-
clearTimeout(\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668);
|
|
70
|
-
await this.\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, 1011, "\u53D1\u751F\u9519\u8BEF");
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
if (\u8FDE\u63A5.\u5DF2\u5B8C\u6210 === true && \u8FDE\u63A5.\u7F13\u5B58.length === 0) {
|
|
74
|
-
await log.debug(`\u8FDE\u63A5\u5DF2\u5B8C\u6210, \u6B63\u5E38\u5173\u95ED.`);
|
|
75
|
-
await this.\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, 1e3, "\u6B63\u5E38\u5173\u95ED");
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
if (\u8FDE\u63A5.\u5DF2\u65AD\u5F00 === false) {
|
|
79
|
-
clearTimeout(\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668);
|
|
80
|
-
}
|
|
81
|
-
if (\u8FDE\u63A5.\u5DF2\u65AD\u5F00 === true) {
|
|
82
|
-
await log.debug("\u8FDE\u63A5\u5DF2\u65AD\u5F00, \u7B49\u5F85\u5BA2\u6237\u7AEF\u91CD\u8FDE.");
|
|
83
|
-
let \u8D85\u65F6\u65F6\u95F4 = 3e4;
|
|
84
|
-
clearTimeout(\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668);
|
|
85
|
-
\u8FDE\u63A5.\u8D85\u65F6\u5B9A\u65F6\u5668 = setTimeout(async () => {
|
|
86
|
-
if (this.\u8FDE\u63A5\u8868[id]?.\u5DF2\u65AD\u5F00 === true) {
|
|
87
|
-
await log.error("\u5BA2\u6237\u7AEF\u8D85\u65F6\u672A\u91CD\u8FDE\uFF0C\u6E05\u7406\u8FDE\u63A5.");
|
|
88
|
-
await this.\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, 1011, "\u5BA2\u6237\u7AEF\u8D85\u65F6\u672A\u91CD\u8FDE\uFF0C\u6E05\u7406\u8FDE\u63A5");
|
|
89
|
-
}
|
|
90
|
-
}, \u8D85\u65F6\u65F6\u95F4);
|
|
91
|
-
}
|
|
51
|
+
log = Global.getItem("log").then((a) => a.extend("@lsby:net-core").extend("WebSocket\u7BA1\u7406\u5668"));
|
|
52
|
+
\u6E05\u7406\u51FD\u6570\u8868 = {};
|
|
53
|
+
async \u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
|
|
54
|
+
this.\u8FDE\u63A5\u8868[id] = ws\u53E5\u67C4;
|
|
92
55
|
}
|
|
93
|
-
async \
|
|
94
|
-
|
|
95
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0) {
|
|
96
|
-
this.\u8FDE\u63A5\u8868[id] = {
|
|
97
|
-
ws,
|
|
98
|
-
\u7F13\u5B58: [],
|
|
99
|
-
\u5DF2\u5B8C\u6210: false,
|
|
100
|
-
\u5DF2\u65AD\u5F00: false,
|
|
101
|
-
\u5DF2\u9519\u8BEF: false,
|
|
102
|
-
\u6570\u636E\u53D1\u9001\u4E2D: false,
|
|
103
|
-
\u7F13\u5B58\u53D1\u9001\u4E2D: false
|
|
104
|
-
};
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
let \u65E7\u53E5\u67C4 = this.\u8FDE\u63A5\u8868[id].ws;
|
|
108
|
-
await log.info("\u65E7\u8FDE\u63A5\u5B58\u5728, \u5C06\u66FF\u6362\u8868\u4E2D\u6570\u636E, \u5E76\u5173\u95ED\u65E7ws\u53E5\u67C4.");
|
|
109
|
-
this.\u8FDE\u63A5\u8868[id].ws = ws;
|
|
110
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u5B8C\u6210 = false;
|
|
111
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u65AD\u5F00 = false;
|
|
112
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u9519\u8BEF = false;
|
|
113
|
-
this.\u8FDE\u63A5\u8868[id].\u6570\u636E\u53D1\u9001\u4E2D = false;
|
|
114
|
-
this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58\u53D1\u9001\u4E2D = false;
|
|
115
|
-
\u65E7\u53E5\u67C4?.close(1011, "\u65B0\u8FDE\u63A5\u66FF\u6362\u65E7\u8FDE\u63A5");
|
|
116
|
-
await log.info("\u53D1\u9001\u65E7\u8FDE\u63A5\u7F13\u5B58");
|
|
117
|
-
this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58\u53D1\u9001\u4E2D = true;
|
|
118
|
-
while (this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58.length !== 0) {
|
|
119
|
-
await this.\u53D1\u9001\u4FE1\u606F_\u5185\u90E8(id, this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58.shift());
|
|
120
|
-
}
|
|
121
|
-
this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58\u53D1\u9001\u4E2D = false;
|
|
122
|
-
await log.info("\u53D1\u9001\u65E7\u8FDE\u63A5\u7F13\u5B58\u5B8C\u6210");
|
|
56
|
+
async \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(id) {
|
|
57
|
+
return this.\u8FDE\u63A5\u8868.hasOwnProperty(id) ? true : false;
|
|
123
58
|
}
|
|
124
59
|
async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(id, \u6E05\u7406\u51FD\u6570) {
|
|
125
|
-
|
|
126
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0) {
|
|
127
|
-
await log.error(`\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5`);
|
|
60
|
+
if (this.\u8FDE\u63A5\u8868.hasOwnProperty(id) === false)
|
|
128
61
|
return;
|
|
129
|
-
|
|
130
|
-
this.\u8FDE\u63A5\u8868[id].\u6E05\u7406\u51FD\u6570 = \u6E05\u7406\u51FD\u6570;
|
|
62
|
+
this.\u6E05\u7406\u51FD\u6570\u8868[id] = \u6E05\u7406\u51FD\u6570;
|
|
131
63
|
}
|
|
132
|
-
async \
|
|
133
|
-
|
|
134
|
-
while (this.\u8FDE\u63A5\u8868[id]?.\u6570\u636E\u53D1\u9001\u4E2D === true) {
|
|
135
|
-
await log.info("\u6570\u636E\u53D1\u9001\u4E2D, \u5C06\u9000\u907F.");
|
|
136
|
-
let \u9000\u907F\u65F6\u95F4 = 100;
|
|
137
|
-
await new Promise((res, _rej) => setTimeout(() => res(), \u9000\u907F\u65F6\u95F4));
|
|
138
|
-
}
|
|
139
|
-
let \u8FDE\u63A5 = this.\u8FDE\u63A5\u8868[id];
|
|
140
|
-
if (\u8FDE\u63A5 === void 0) {
|
|
141
|
-
await log.error("\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5");
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
await new Promise((res, rej) => {
|
|
145
|
-
\u8FDE\u63A5.\u6570\u636E\u53D1\u9001\u4E2D = true;
|
|
146
|
-
let ws\u53E5\u67C4 = \u8FDE\u63A5.ws;
|
|
147
|
-
if (ws\u53E5\u67C4 === null) {
|
|
148
|
-
log.error("\u65E0\u6CD5\u627E\u5230ws\u53E5\u67C4").catch(console.error);
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
ws\u53E5\u67C4.send(JSON.stringify(data), (err) => {
|
|
152
|
-
if ((err ?? null) !== null) {
|
|
153
|
-
log.error(err).catch(console.error);
|
|
154
|
-
return rej(err);
|
|
155
|
-
}
|
|
156
|
-
log.debug("WebSocket \u4FE1\u606F\u53D1\u9001\u6210\u529F").catch(console.error);
|
|
157
|
-
return res();
|
|
158
|
-
});
|
|
159
|
-
}).finally(() => {
|
|
160
|
-
\u8FDE\u63A5.\u6570\u636E\u53D1\u9001\u4E2D = false;
|
|
161
|
-
});
|
|
64
|
+
async \u83B7\u5F97\u53E5\u67C4(id) {
|
|
65
|
+
return this.\u8FDE\u63A5\u8868[id] ?? null;
|
|
162
66
|
}
|
|
163
|
-
async \
|
|
164
|
-
let log =
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
await log.error("\u8FDE\u63A5\u5DF2\u65AD\u5F00, \u5C06\u7F13\u5B58\u6570\u636E.");
|
|
171
|
-
this.\u8FDE\u63A5\u8868[id].\u7F13\u5B58.push(data);
|
|
172
|
-
return;
|
|
67
|
+
async \u5220\u9664\u8FDE\u63A5(id) {
|
|
68
|
+
let log = await this.log;
|
|
69
|
+
let \u6E05\u7406\u51FD\u6570 = this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
70
|
+
try {
|
|
71
|
+
this.\u8FDE\u63A5\u8868[id]?.close(1e3, "\u670D\u52A1\u5668\u4E3B\u52A8\u5173\u95ED");
|
|
72
|
+
} catch (err) {
|
|
73
|
+
await log.error(`\u5173\u95ED WebSocket \u53E5\u67C4\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`);
|
|
173
74
|
}
|
|
174
|
-
|
|
175
|
-
await
|
|
176
|
-
|
|
177
|
-
await
|
|
75
|
+
try {
|
|
76
|
+
await \u6E05\u7406\u51FD\u6570?.();
|
|
77
|
+
} catch (err) {
|
|
78
|
+
await log.error(`\u6E05\u7406\u8FDE\u63A5\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`);
|
|
178
79
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
async \u6807\u8BB0\u8FDE\u63A5\u5DF2\u5B8C\u6210(id) {
|
|
182
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0)
|
|
183
|
-
return;
|
|
184
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u5B8C\u6210 = true;
|
|
185
|
-
await this.\u9500\u6BC1\u5224\u5B9A(id);
|
|
186
|
-
}
|
|
187
|
-
async \u6807\u8BB0\u8FDE\u63A5\u5DF2\u65AD\u5F00(id) {
|
|
188
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0)
|
|
189
|
-
return;
|
|
190
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u65AD\u5F00 = true;
|
|
191
|
-
await this.\u9500\u6BC1\u5224\u5B9A(id);
|
|
192
|
-
}
|
|
193
|
-
async \u53D6\u6D88\u6807\u8BB0\u8FDE\u63A5\u5DF2\u65AD\u5F00(id) {
|
|
194
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0)
|
|
195
|
-
return;
|
|
196
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u65AD\u5F00 = false;
|
|
197
|
-
await this.\u9500\u6BC1\u5224\u5B9A(id);
|
|
198
|
-
}
|
|
199
|
-
async \u6807\u8BB0\u8FDE\u63A5\u5DF2\u9519\u8BEF(id) {
|
|
200
|
-
if (this.\u8FDE\u63A5\u8868[id] === void 0)
|
|
201
|
-
return;
|
|
202
|
-
this.\u8FDE\u63A5\u8868[id].\u5DF2\u9519\u8BEF = true;
|
|
203
|
-
await this.\u9500\u6BC1\u5224\u5B9A(id);
|
|
80
|
+
delete this.\u8FDE\u63A5\u8868[id];
|
|
81
|
+
delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
204
82
|
}
|
|
205
83
|
};
|
|
206
84
|
|
|
@@ -210,11 +88,11 @@ var Global = new import_ts_global.GlobalService([
|
|
|
210
88
|
return new import_ts_log.Log("@lsby:net-core");
|
|
211
89
|
}),
|
|
212
90
|
new import_ts_global.GlobalAsyncItem("WebSocket\u7BA1\u7406\u5668", async () => {
|
|
213
|
-
return new WebSocket\u7BA1\u7406\u5668();
|
|
91
|
+
return new WebSocket\u7BA1\u7406\u5668({});
|
|
214
92
|
})
|
|
215
93
|
]);
|
|
216
94
|
|
|
217
|
-
// src/help/
|
|
95
|
+
// src/help/interior.ts
|
|
218
96
|
function \u622A\u65AD\u5B57\u7B26\u4E32(\u5185\u5BB9) {
|
|
219
97
|
let \u6700\u5927\u65E5\u5FD7\u957F\u5EA6 = 1e3;
|
|
220
98
|
if (\u5185\u5BB9.length > \u6700\u5927\u65E5\u5FD7\u957F\u5EA6)
|
|
@@ -337,30 +215,34 @@ var \u670D\u52A1\u5668 = class {
|
|
|
337
215
|
await log.debug("\u6536\u5230 WebSocket \u8FDE\u63A5\u8BF7\u6C42: %o", req.url);
|
|
338
216
|
let \u5BA2\u6237\u7AEFid = req.url?.split("?id=")[1] ?? null;
|
|
339
217
|
if (\u5BA2\u6237\u7AEFid === null) {
|
|
340
|
-
await log.error("\u7F3A\u5C11\u5BA2\u6237\
|
|
341
|
-
return this.\u5173\u95EDWebSocket\u8FDE\u63A5(ws, log,
|
|
218
|
+
await log.error("\u8FDE\u63A5\u8BF7\u6C42\u7F3A\u5C11\u5BA2\u6237\u7AEF ID");
|
|
219
|
+
return this.\u5173\u95EDWebSocket\u8FDE\u63A5(ws, log, 4001, "\u7F3A\u5C11\u5BA2\u6237\u7AEF ID");
|
|
342
220
|
}
|
|
221
|
+
await log.debug("\u89E3\u6790\u5BA2\u6237\u7AEF ID: %s", \u5BA2\u6237\u7AEFid);
|
|
343
222
|
let WebSocket\u7BA1\u7406\u56682 = await Global.getItem("WebSocket\u7BA1\u7406\u5668");
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
223
|
+
let \u8FDE\u63A5\u5DF2\u5B58\u5728 = await WebSocket\u7BA1\u7406\u56682.\u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(\u5BA2\u6237\u7AEFid);
|
|
224
|
+
if (\u8FDE\u63A5\u5DF2\u5B58\u5728) {
|
|
225
|
+
await log.error("\u5BA2\u6237\u7AEF ID \u5DF2\u5B58\u5728: %s", \u5BA2\u6237\u7AEFid);
|
|
226
|
+
return this.\u5173\u95EDWebSocket\u8FDE\u63A5(ws, log, 4002, "\u5BA2\u6237\u7AEF ID \u5DF2\u5B58\u5728");
|
|
227
|
+
}
|
|
228
|
+
await WebSocket\u7BA1\u7406\u56682.\u589E\u52A0\u8FDE\u63A5(\u5BA2\u6237\u7AEFid, ws);
|
|
229
|
+
await log.info("WebSocket \u8FDE\u63A5\u5DF2\u5EFA\u7ACB, \u5BA2\u6237\u7AEF ID: %s", \u5BA2\u6237\u7AEFid);
|
|
349
230
|
ws.on("close", async () => {
|
|
350
|
-
await WebSocket\
|
|
231
|
+
await log.info("WebSocket \u8FDE\u63A5\u5173\u95ED: %s", \u5BA2\u6237\u7AEFid);
|
|
232
|
+
await WebSocket\u7BA1\u7406\u56682.\u5220\u9664\u8FDE\u63A5(\u5BA2\u6237\u7AEFid);
|
|
351
233
|
});
|
|
352
234
|
ws.on("error", async (err) => {
|
|
353
|
-
await log.error("WebSocket \u51FA\u73B0\u9519\u8BEF: %o",
|
|
354
|
-
await WebSocket\u7BA1\u7406\u56682.\
|
|
235
|
+
await log.error("WebSocket \u51FA\u73B0\u9519\u8BEF, \u5BA2\u6237\u7AEF ID: %s, \u9519\u8BEF: %o", \u5BA2\u6237\u7AEFid, err);
|
|
236
|
+
await WebSocket\u7BA1\u7406\u56682.\u5220\u9664\u8FDE\u63A5(\u5BA2\u6237\u7AEFid);
|
|
237
|
+
});
|
|
238
|
+
wss.on("listening", async () => {
|
|
239
|
+
let log2 = logBase;
|
|
240
|
+
await log2.info("WebSocket \u670D\u52A1\u5668\u5DF2\u542F\u52A8\u5E76\u76D1\u542C");
|
|
241
|
+
});
|
|
242
|
+
wss.on("error", async (err) => {
|
|
243
|
+
let log2 = logBase;
|
|
244
|
+
await log2.error("WebSocket \u670D\u52A1\u5668\u53D1\u751F\u9519\u8BEF: %o", err);
|
|
355
245
|
});
|
|
356
|
-
});
|
|
357
|
-
wss.on("listening", async () => {
|
|
358
|
-
let log = logBase;
|
|
359
|
-
await log.info("WebSocket \u670D\u52A1\u5668\u5DF2\u542F\u52A8\u5E76\u76D1\u542C");
|
|
360
|
-
});
|
|
361
|
-
wss.on("error", async (err) => {
|
|
362
|
-
let log = logBase;
|
|
363
|
-
await log.error("WebSocket \u670D\u52A1\u5668\u53D1\u751F\u9519\u8BEF: %o", err);
|
|
364
246
|
});
|
|
365
247
|
}
|
|
366
248
|
async \u5173\u95EDWebSocket\u8FDE\u63A5(ws, log, code, reason) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import '@lsby/ts-log';
|
|
2
2
|
import 'node:http';
|
|
3
|
-
export { 服 as 服务器, 请 as 请求附加参数类型 } from '../interface-base-
|
|
3
|
+
export { 服 as 服务器, 请 as 请求附加参数类型 } from '../interface-base-CBN3QoUN.cjs';
|
|
4
4
|
import 'zod';
|
|
5
5
|
import '@lsby/ts-fp-data';
|
|
6
6
|
import 'express';
|
|
7
|
-
import '../help/
|
|
7
|
+
import '../help/interior.cjs';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { 接 as ______, a as ______$1, k as ____Base, 空 as ___, b as __, 常 as _______, p as __________, q as __________$1 } from '../interface-base-
|
|
2
|
+
import { 接 as ______, a as ______$1, k as ____Base, 空 as ___, b as __, 常 as _______, p as __________, q as __________$1 } from '../interface-base-CBN3QoUN.cjs';
|
|
3
3
|
import '@lsby/ts-fp-data';
|
|
4
4
|
import 'express';
|
|
5
|
-
import '../help/
|
|
5
|
+
import '../help/interior.cjs';
|
|
6
6
|
import '@lsby/ts-log';
|
|
7
7
|
import 'node:http';
|
|
8
8
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { 接 as ______, a as ______$1, k as ____Base, 空 as ___, b as __, w as ___________, p as __________, q as __________$1 } from '../interface-base-
|
|
2
|
+
import { 接 as ______, a as ______$1, k as ____Base, 空 as ___, b as __, w as ___________, p as __________, q as __________$1 } from '../interface-base-CBN3QoUN.cjs';
|
|
3
3
|
import '@lsby/ts-fp-data';
|
|
4
4
|
import 'express';
|
|
5
|
-
import '../help/
|
|
5
|
+
import '../help/interior.cjs';
|
|
6
6
|
import '@lsby/ts-log';
|
|
7
7
|
import 'node:http';
|
|
8
8
|
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// src/global/global.ts
|
|
2
|
+
import { GlobalAsyncItem, GlobalService } from "@lsby/ts-global";
|
|
3
|
+
import { Log } from "@lsby/ts-log";
|
|
4
|
+
var Global = new GlobalService([
|
|
5
|
+
new GlobalAsyncItem("log", async () => {
|
|
6
|
+
return new Log("@lsby:net-core");
|
|
7
|
+
}),
|
|
8
|
+
new GlobalAsyncItem("WebSocket\u7BA1\u7406\u5668", async () => {
|
|
9
|
+
return new WebSocket\u7BA1\u7406\u5668({});
|
|
10
|
+
})
|
|
11
|
+
]);
|
|
12
|
+
|
|
13
|
+
// src/global/web-socket-management.ts
|
|
14
|
+
var WebSocket\u7BA1\u7406\u5668 = class {
|
|
15
|
+
constructor(\u8FDE\u63A5\u8868) {
|
|
16
|
+
this.\u8FDE\u63A5\u8868 = \u8FDE\u63A5\u8868;
|
|
17
|
+
}
|
|
18
|
+
log = Global.getItem("log").then((a) => a.extend("@lsby:net-core").extend("WebSocket\u7BA1\u7406\u5668"));
|
|
19
|
+
\u6E05\u7406\u51FD\u6570\u8868 = {};
|
|
20
|
+
async \u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
|
|
21
|
+
this.\u8FDE\u63A5\u8868[id] = ws\u53E5\u67C4;
|
|
22
|
+
}
|
|
23
|
+
async \u67E5\u8BE2\u8FDE\u63A5\u5B58\u5728(id) {
|
|
24
|
+
return this.\u8FDE\u63A5\u8868.hasOwnProperty(id) ? true : false;
|
|
25
|
+
}
|
|
26
|
+
async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(id, \u6E05\u7406\u51FD\u6570) {
|
|
27
|
+
if (this.\u8FDE\u63A5\u8868.hasOwnProperty(id) === false)
|
|
28
|
+
return;
|
|
29
|
+
this.\u6E05\u7406\u51FD\u6570\u8868[id] = \u6E05\u7406\u51FD\u6570;
|
|
30
|
+
}
|
|
31
|
+
async \u83B7\u5F97\u53E5\u67C4(id) {
|
|
32
|
+
return this.\u8FDE\u63A5\u8868[id] ?? null;
|
|
33
|
+
}
|
|
34
|
+
async \u5220\u9664\u8FDE\u63A5(id) {
|
|
35
|
+
let log = await this.log;
|
|
36
|
+
let \u6E05\u7406\u51FD\u6570 = this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
37
|
+
try {
|
|
38
|
+
this.\u8FDE\u63A5\u8868[id]?.close(1e3, "\u670D\u52A1\u5668\u4E3B\u52A8\u5173\u95ED");
|
|
39
|
+
} catch (err) {
|
|
40
|
+
await log.error(`\u5173\u95ED WebSocket \u53E5\u67C4\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`);
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
await \u6E05\u7406\u51FD\u6570?.();
|
|
44
|
+
} catch (err) {
|
|
45
|
+
await log.error(`\u6E05\u7406\u8FDE\u63A5\u5931\u8D25, id: ${id}, \u9519\u8BEF: ${err}`);
|
|
46
|
+
}
|
|
47
|
+
delete this.\u8FDE\u63A5\u8868[id];
|
|
48
|
+
delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export {
|
|
53
|
+
WebSocket管理器,
|
|
54
|
+
Global
|
|
55
|
+
};
|