@lsby/net-core 0.13.10 → 0.14.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/model/hub.cjs +34 -26
- package/dist/cjs/global/model/hub.d.cts +26 -10
- package/dist/cjs/global/model/web-socket.cjs +23 -42
- package/dist/cjs/global/model/web-socket.d.cts +3 -5
- package/dist/cjs/global/web-socket.cjs +23 -42
- package/dist/cjs/help/help.cjs +23 -42
- package/dist/cjs/index.cjs +58 -45
- package/dist/cjs/index.d.cts +1 -1
- package/dist/cjs/interface/interface-logic.cjs +23 -42
- package/dist/cjs/plugin/web-socket.cjs +49 -29
- package/dist/cjs/plugin/web-socket.d.cts +5 -2
- package/dist/cjs/server/server.cjs +23 -42
- package/dist/esm/{chunk-MRTIZDKN.js → chunk-AFK5ATXH.js} +6 -17
- package/dist/esm/{chunk-AB35ZHL3.js → chunk-F3TAHAJB.js} +1 -1
- package/dist/esm/chunk-IONVNCYO.js +67 -0
- package/dist/esm/{chunk-MVMDWJTB.js → chunk-L37E7HVL.js} +1 -1
- package/dist/esm/{chunk-7GT72IUT.js → chunk-LGDSCDOJ.js} +19 -7
- package/dist/esm/{chunk-P23ZAK4I.js → chunk-MPNYB4TQ.js} +1 -1
- package/dist/esm/{chunk-TE6CG2FF.js → chunk-ON373JA4.js} +1 -1
- package/dist/esm/global/model/hub.d.ts +26 -10
- package/dist/esm/global/model/hub.js +3 -3
- package/dist/esm/global/model/web-socket.d.ts +3 -5
- package/dist/esm/global/model/web-socket.js +2 -2
- package/dist/esm/global/web-socket.js +3 -3
- package/dist/esm/help/help.js +4 -4
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +21 -16
- package/dist/esm/interface/interface-logic.js +5 -5
- package/dist/esm/plugin/web-socket.d.ts +5 -2
- package/dist/esm/plugin/web-socket.js +2 -2
- package/dist/esm/server/server.js +4 -4
- package/package.json +1 -1
- package/dist/esm/chunk-NTDDPUP7.js +0 -59
|
@@ -21,12 +21,23 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
21
21
|
var hub_exports = {};
|
|
22
22
|
__export(hub_exports, {
|
|
23
23
|
\u96C6\u7EBF\u5668\u6A21\u578B: () => \u96C6\u7EBF\u5668\u6A21\u578B,
|
|
24
|
-
\u96C6\u7EBF\u5668\u76D1\u542C\u5668\
|
|
24
|
+
\u96C6\u7EBF\u5668\u76D1\u542C\u5668\u5BBF\u4E3B: () => \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u5BBF\u4E3B
|
|
25
25
|
});
|
|
26
26
|
module.exports = __toCommonJS(hub_exports);
|
|
27
|
-
var \u96C6\u7EBF\u5668\u76D1\u542C\u5668\
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
var \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u5BBF\u4E3B = class {
|
|
28
|
+
\u89E3\u9664\u56DE\u8C03 = null;
|
|
29
|
+
/** @internal */
|
|
30
|
+
\u7ED1\u5B9A\u56DE\u8C03(\u56DE\u8C03) {
|
|
31
|
+
if (this.\u89E3\u9664\u56DE\u8C03 !== null) {
|
|
32
|
+
throw new Error("\u6B64\u5BBF\u4E3B\u5DF2\u88AB\u7ED1\u5B9A\u5230\u4E00\u4E2A\u76D1\u542C\u5668\uFF0C\u4E0D\u53EF\u91CD\u590D\u7ED1\u5B9A");
|
|
33
|
+
}
|
|
34
|
+
this.\u89E3\u9664\u56DE\u8C03 = \u56DE\u8C03;
|
|
35
|
+
}
|
|
36
|
+
\u89E3\u7ED1() {
|
|
37
|
+
if (this.\u89E3\u9664\u56DE\u8C03 !== null) {
|
|
38
|
+
this.\u89E3\u9664\u56DE\u8C03();
|
|
39
|
+
this.\u89E3\u9664\u56DE\u8C03 = null;
|
|
40
|
+
}
|
|
30
41
|
}
|
|
31
42
|
};
|
|
32
43
|
var \u96C6\u7EBF\u5668\u6A21\u578B = class _\u96C6\u7EBF\u5668\u6A21\u578B {
|
|
@@ -34,11 +45,9 @@ var \u96C6\u7EBF\u5668\u6A21\u578B = class _\u96C6\u7EBF\u5668\u6A21\u578B {
|
|
|
34
45
|
static \u6E05\u7406\u6CE8\u518C\u5668 = new FinalizationRegistry(({ \u5B9E\u4F8B\u5F15\u7528, \u76D1\u542C\u5668 }) => {
|
|
35
46
|
let \u5B9E\u4F8B = \u5B9E\u4F8B\u5F15\u7528.deref();
|
|
36
47
|
if (\u5B9E\u4F8B === void 0) return;
|
|
37
|
-
|
|
38
|
-
if (\u7D22\u5F15 !== -1) \u5B9E\u4F8B.\u76D1\u542C\u5668\u5217\u8868.splice(\u7D22\u5F15, 1);
|
|
48
|
+
\u5B9E\u4F8B.\u76D1\u542C\u5668\u96C6\u5408.delete(\u76D1\u542C\u5668);
|
|
39
49
|
});
|
|
40
|
-
\u76D1\u542C\u5668\
|
|
41
|
-
\u6301\u6709\u8005\u6620\u5C04 = /* @__PURE__ */ new WeakMap();
|
|
50
|
+
\u76D1\u542C\u5668\u96C6\u5408 = /* @__PURE__ */ new Set();
|
|
42
51
|
\u9519\u8BEF\u5904\u7406\u5668 = null;
|
|
43
52
|
/**
|
|
44
53
|
* 设置广播错误时的处理器。
|
|
@@ -48,27 +57,26 @@ var \u96C6\u7EBF\u5668\u6A21\u578B = class _\u96C6\u7EBF\u5668\u6A21\u578B {
|
|
|
48
57
|
}
|
|
49
58
|
/**
|
|
50
59
|
* 注册监听器。
|
|
51
|
-
*
|
|
52
|
-
*
|
|
60
|
+
* 必须提供一个 `集线器监听器宿主` 实例。若宿主对象不被持有并被回收,监听器会在未来自动回收。
|
|
61
|
+
*
|
|
62
|
+
* ⚠️ 危险警告: 即使在该方法的同一逻辑层面的词法作用域内,若未显式调用 `宿主.解绑` 或保留长期强引用使用痕迹,
|
|
63
|
+
* 那么随着控制权转交和可达性缩减,仍然存在被 V8 提前进行垃圾回收而突然导致监听失效的极大风险。
|
|
64
|
+
* 建议详细阅读 `集线器监听器宿主` 类的文档备注以此警醒。
|
|
53
65
|
*/
|
|
54
|
-
\u6DFB\u52A0\u76D1\u542C\u5668(\u76D1\u542C\u5668) {
|
|
55
|
-
this.\u76D1\u542C\u5668\u5217\u8868.push(\u76D1\u542C\u5668);
|
|
56
|
-
let \u6301\u6709\u8005 = new \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005(\u76D1\u542C\u5668);
|
|
57
|
-
this.\u6301\u6709\u8005\u6620\u5C04.set(\u6301\u6709\u8005, \u76D1\u542C\u5668);
|
|
66
|
+
\u6DFB\u52A0\u76D1\u542C\u5668(\u76D1\u542C\u5668, \u5BBF\u4E3B) {
|
|
58
67
|
let \u5B9E\u4F8B\u5F31\u5F15\u7528 = new WeakRef(this);
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
_\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.
|
|
68
|
-
this.\u6301\u6709\u8005\u6620\u5C04.delete(\u6301\u6709\u8005);
|
|
68
|
+
\u5BBF\u4E3B.\u7ED1\u5B9A\u56DE\u8C03(() => {
|
|
69
|
+
let \u5B9E\u4F8B = \u5B9E\u4F8B\u5F31\u5F15\u7528.deref();
|
|
70
|
+
if (\u5B9E\u4F8B !== void 0) {
|
|
71
|
+
\u5B9E\u4F8B.\u76D1\u542C\u5668\u96C6\u5408.delete(\u76D1\u542C\u5668);
|
|
72
|
+
}
|
|
73
|
+
_\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.unregister(\u5BBF\u4E3B);
|
|
74
|
+
});
|
|
75
|
+
this.\u76D1\u542C\u5668\u96C6\u5408.add(\u76D1\u542C\u5668);
|
|
76
|
+
_\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.register(\u5BBF\u4E3B, { \u5B9E\u4F8B\u5F15\u7528: \u5B9E\u4F8B\u5F31\u5F15\u7528, \u76D1\u542C\u5668 }, \u5BBF\u4E3B);
|
|
69
77
|
}
|
|
70
78
|
async \u5E7F\u64AD(\u6570\u636E) {
|
|
71
|
-
let snapshot = [...this.\u76D1\u542C\u5668\
|
|
79
|
+
let snapshot = [...this.\u76D1\u542C\u5668\u96C6\u5408];
|
|
72
80
|
let \u7ED3\u679C = await Promise.allSettled(snapshot.map((l) => l(\u6570\u636E)));
|
|
73
81
|
for (let [\u7D22\u5F15, \u7ED3\u679C\u9879] of \u7ED3\u679C.entries()) {
|
|
74
82
|
if (\u7ED3\u679C\u9879.status === "rejected" && this.\u9519\u8BEF\u5904\u7406\u5668 !== null) {
|
|
@@ -80,5 +88,5 @@ var \u96C6\u7EBF\u5668\u6A21\u578B = class _\u96C6\u7EBF\u5668\u6A21\u578B {
|
|
|
80
88
|
// Annotate the CommonJS export names for ESM import in node:
|
|
81
89
|
0 && (module.exports = {
|
|
82
90
|
\u96C6\u7EBF\u5668\u6A21\u578B,
|
|
83
|
-
\u96C6\u7EBF\u5668\u76D1\u542C\u5668\
|
|
91
|
+
\u96C6\u7EBF\u5668\u76D1\u542C\u5668\u5BBF\u4E3B
|
|
84
92
|
});
|
|
@@ -1,13 +1,27 @@
|
|
|
1
1
|
type 集线器监听器<T> = (数据: T) => Promise<void>;
|
|
2
2
|
type 广播错误处理<T> = (数据: T, 索引: number, 错误: unknown) => Promise<void> | void;
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
/**
|
|
4
|
+
* 集线器监听器的生命周期宿主。
|
|
5
|
+
*
|
|
6
|
+
* ⚠️ 极其关键的生命周期警告 (基于可达性分析的 GC 陷阱):
|
|
7
|
+
* 就算该宿主对象是在某个函数/代码块内部用 `let` 定义的,
|
|
8
|
+
* 只要在传入并绑定后,后续的块级执行代码逻辑中再也没有明确使用过这个变量(哪怕依然在同一个作用域中,只隔了几个 `await` 导致挂起),
|
|
9
|
+
* V8 的可达性分析 (Reachability Analysis) 机制就有可能直接将它判定为"死亡实例",并毫无预兆地将其提早垃圾回收。
|
|
10
|
+
* 一旦它被回收,底层基于 FinalizationRegistry 机制的监听器必定会被默默注销销毁,进而引发不可捉摸的幽灵 Bug。
|
|
11
|
+
*
|
|
12
|
+
* 因此强烈建议对宿主的处理必须做到以下做法之一以防止"同作用域幽灵断联":
|
|
13
|
+
* 1. 最稳妥的做法:在你期待的监听生命周期末尾,务必显式并手动调用一次 `宿主.解绑()` 操作 (它同时也是维持该变量存活的必要证明)。
|
|
14
|
+
* 2. 绑定在长期实体生存期:把它强行关联进拥有对应生存期的实体内 (例如直接作为一个持久化句柄的强引用缓存属性对象存在)。
|
|
15
|
+
*/
|
|
16
|
+
declare class 集线器监听器宿主 {
|
|
17
|
+
private 解除回调;
|
|
18
|
+
/** @internal */
|
|
19
|
+
绑定回调(回调: () => void): void;
|
|
20
|
+
解绑(): void;
|
|
6
21
|
}
|
|
7
22
|
declare class 集线器模型<T> {
|
|
8
23
|
private static 清理注册器;
|
|
9
|
-
private
|
|
10
|
-
private 持有者映射;
|
|
24
|
+
private 监听器集合;
|
|
11
25
|
private 错误处理器;
|
|
12
26
|
/**
|
|
13
27
|
* 设置广播错误时的处理器。
|
|
@@ -15,12 +29,14 @@ declare class 集线器模型<T> {
|
|
|
15
29
|
设置错误处理器(处理器: 广播错误处理<T>): void;
|
|
16
30
|
/**
|
|
17
31
|
* 注册监听器。
|
|
18
|
-
*
|
|
19
|
-
*
|
|
32
|
+
* 必须提供一个 `集线器监听器宿主` 实例。若宿主对象不被持有并被回收,监听器会在未来自动回收。
|
|
33
|
+
*
|
|
34
|
+
* ⚠️ 危险警告: 即使在该方法的同一逻辑层面的词法作用域内,若未显式调用 `宿主.解绑` 或保留长期强引用使用痕迹,
|
|
35
|
+
* 那么随着控制权转交和可达性缩减,仍然存在被 V8 提前进行垃圾回收而突然导致监听失效的极大风险。
|
|
36
|
+
* 建议详细阅读 `集线器监听器宿主` 类的文档备注以此警醒。
|
|
20
37
|
*/
|
|
21
|
-
添加监听器(监听器: 集线器监听器<T
|
|
22
|
-
移除监听器(持有者: 集线器监听器持有者<T>): void;
|
|
38
|
+
添加监听器(监听器: 集线器监听器<T>, 宿主: 集线器监听器宿主): void;
|
|
23
39
|
广播(数据: T): Promise<void>;
|
|
24
40
|
}
|
|
25
41
|
|
|
26
|
-
export { type 广播错误处理, 集线器模型, type 集线器监听器,
|
|
42
|
+
export { type 广播错误处理, 集线器模型, type 集线器监听器, 集线器监听器宿主 };
|
|
@@ -29,21 +29,14 @@ var import_ts_log = require("@lsby/ts-log");
|
|
|
29
29
|
var \u5168\u5C40\u65E5\u5FD7\u5355\u4F8B = new import_ts_log.Log("@lsby:net-core");
|
|
30
30
|
|
|
31
31
|
// src/global/model/hub.ts
|
|
32
|
-
var \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005 = class {
|
|
33
|
-
constructor(\u76D1\u542C\u5668) {
|
|
34
|
-
this.\u76D1\u542C\u5668 = \u76D1\u542C\u5668;
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
32
|
var \u96C6\u7EBF\u5668\u6A21\u578B = class _\u96C6\u7EBF\u5668\u6A21\u578B {
|
|
38
33
|
// 使用 WeakRef + FinalizationRegistry 防止"反向持有" this
|
|
39
34
|
static \u6E05\u7406\u6CE8\u518C\u5668 = new FinalizationRegistry(({ \u5B9E\u4F8B\u5F15\u7528, \u76D1\u542C\u5668 }) => {
|
|
40
35
|
let \u5B9E\u4F8B = \u5B9E\u4F8B\u5F15\u7528.deref();
|
|
41
36
|
if (\u5B9E\u4F8B === void 0) return;
|
|
42
|
-
|
|
43
|
-
if (\u7D22\u5F15 !== -1) \u5B9E\u4F8B.\u76D1\u542C\u5668\u5217\u8868.splice(\u7D22\u5F15, 1);
|
|
37
|
+
\u5B9E\u4F8B.\u76D1\u542C\u5668\u96C6\u5408.delete(\u76D1\u542C\u5668);
|
|
44
38
|
});
|
|
45
|
-
\u76D1\u542C\u5668\
|
|
46
|
-
\u6301\u6709\u8005\u6620\u5C04 = /* @__PURE__ */ new WeakMap();
|
|
39
|
+
\u76D1\u542C\u5668\u96C6\u5408 = /* @__PURE__ */ new Set();
|
|
47
40
|
\u9519\u8BEF\u5904\u7406\u5668 = null;
|
|
48
41
|
/**
|
|
49
42
|
* 设置广播错误时的处理器。
|
|
@@ -53,27 +46,26 @@ var \u96C6\u7EBF\u5668\u6A21\u578B = class _\u96C6\u7EBF\u5668\u6A21\u578B {
|
|
|
53
46
|
}
|
|
54
47
|
/**
|
|
55
48
|
* 注册监听器。
|
|
56
|
-
*
|
|
57
|
-
*
|
|
49
|
+
* 必须提供一个 `集线器监听器宿主` 实例。若宿主对象不被持有并被回收,监听器会在未来自动回收。
|
|
50
|
+
*
|
|
51
|
+
* ⚠️ 危险警告: 即使在该方法的同一逻辑层面的词法作用域内,若未显式调用 `宿主.解绑` 或保留长期强引用使用痕迹,
|
|
52
|
+
* 那么随着控制权转交和可达性缩减,仍然存在被 V8 提前进行垃圾回收而突然导致监听失效的极大风险。
|
|
53
|
+
* 建议详细阅读 `集线器监听器宿主` 类的文档备注以此警醒。
|
|
58
54
|
*/
|
|
59
|
-
\u6DFB\u52A0\u76D1\u542C\u5668(\u76D1\u542C\u5668) {
|
|
60
|
-
this.\u76D1\u542C\u5668\u5217\u8868.push(\u76D1\u542C\u5668);
|
|
61
|
-
let \u6301\u6709\u8005 = new \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005(\u76D1\u542C\u5668);
|
|
62
|
-
this.\u6301\u6709\u8005\u6620\u5C04.set(\u6301\u6709\u8005, \u76D1\u542C\u5668);
|
|
55
|
+
\u6DFB\u52A0\u76D1\u542C\u5668(\u76D1\u542C\u5668, \u5BBF\u4E3B) {
|
|
63
56
|
let \u5B9E\u4F8B\u5F31\u5F15\u7528 = new WeakRef(this);
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
_\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.
|
|
73
|
-
this.\u6301\u6709\u8005\u6620\u5C04.delete(\u6301\u6709\u8005);
|
|
57
|
+
\u5BBF\u4E3B.\u7ED1\u5B9A\u56DE\u8C03(() => {
|
|
58
|
+
let \u5B9E\u4F8B = \u5B9E\u4F8B\u5F31\u5F15\u7528.deref();
|
|
59
|
+
if (\u5B9E\u4F8B !== void 0) {
|
|
60
|
+
\u5B9E\u4F8B.\u76D1\u542C\u5668\u96C6\u5408.delete(\u76D1\u542C\u5668);
|
|
61
|
+
}
|
|
62
|
+
_\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.unregister(\u5BBF\u4E3B);
|
|
63
|
+
});
|
|
64
|
+
this.\u76D1\u542C\u5668\u96C6\u5408.add(\u76D1\u542C\u5668);
|
|
65
|
+
_\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.register(\u5BBF\u4E3B, { \u5B9E\u4F8B\u5F15\u7528: \u5B9E\u4F8B\u5F31\u5F15\u7528, \u76D1\u542C\u5668 }, \u5BBF\u4E3B);
|
|
74
66
|
}
|
|
75
67
|
async \u5E7F\u64AD(\u6570\u636E) {
|
|
76
|
-
let snapshot = [...this.\u76D1\u542C\u5668\
|
|
68
|
+
let snapshot = [...this.\u76D1\u542C\u5668\u96C6\u5408];
|
|
77
69
|
let \u7ED3\u679C = await Promise.allSettled(snapshot.map((l) => l(\u6570\u636E)));
|
|
78
70
|
for (let [\u7D22\u5F15, \u7ED3\u679C\u9879] of \u7ED3\u679C.entries()) {
|
|
79
71
|
if (\u7ED3\u679C\u9879.status === "rejected" && this.\u9519\u8BEF\u5904\u7406\u5668 !== null) {
|
|
@@ -88,8 +80,6 @@ var WebSocket\u7BA1\u7406\u5668 = class {
|
|
|
88
80
|
log = \u5168\u5C40\u65E5\u5FD7\u5355\u4F8B.extend("WebSocket\u7BA1\u7406\u5668");
|
|
89
81
|
\u8FDE\u63A5\u8868 = {};
|
|
90
82
|
\u6D88\u606F\u76D1\u542C\u8868 = {};
|
|
91
|
-
\u8FDE\u63A5\u6E05\u7406\u6A21\u578B = new \u96C6\u7EBF\u5668\u6A21\u578B();
|
|
92
|
-
\u8FDE\u63A5\u6301\u6709\u8005\u8868 = {};
|
|
93
83
|
\u6E05\u7406\u51FD\u6570\u8868 = {};
|
|
94
84
|
\u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
|
|
95
85
|
if (id in this.\u8FDE\u63A5\u8868) this.\u5220\u9664\u8FDE\u63A5(id);
|
|
@@ -102,15 +92,11 @@ var WebSocket\u7BA1\u7406\u5668 = class {
|
|
|
102
92
|
this.\u6D88\u606F\u76D1\u542C\u8868[id] = \u6A21\u578B;
|
|
103
93
|
}
|
|
104
94
|
this.\u6CE8\u518Conmessage(id, ws\u53E5\u67C4);
|
|
105
|
-
let \u6301\u6709\u8005 = this.\u8FDE\u63A5\u6E05\u7406\u6A21\u578B.\u6DFB\u52A0\u76D1\u542C\u5668(async () => {
|
|
106
|
-
if (id in this.\u8FDE\u63A5\u8868) this.\u5220\u9664\u8FDE\u63A5(id);
|
|
107
|
-
});
|
|
108
|
-
this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id] = \u6301\u6709\u8005;
|
|
109
|
-
return \u6301\u6709\u8005;
|
|
110
95
|
}
|
|
111
96
|
\u5220\u9664\u8FDE\u63A5(id) {
|
|
112
97
|
let ws = this.\u8FDE\u63A5\u8868[id];
|
|
113
|
-
if (ws
|
|
98
|
+
if (ws === void 0) return;
|
|
99
|
+
if (ws !== null) {
|
|
114
100
|
ws.onmessage = null;
|
|
115
101
|
ws.once("error", (err) => void this.log.error(`WebSocket \u5F02\u6B65\u9519\u8BEF, id: ${id}, \u9519\u8BEF: ${err}`));
|
|
116
102
|
ws.once(
|
|
@@ -128,11 +114,6 @@ var WebSocket\u7BA1\u7406\u5668 = class {
|
|
|
128
114
|
delete this.\u8FDE\u63A5\u8868[id];
|
|
129
115
|
delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
130
116
|
delete this.\u6D88\u606F\u76D1\u542C\u8868[id];
|
|
131
|
-
let \u6301\u6709\u8005 = this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id];
|
|
132
|
-
if (\u6301\u6709\u8005 !== void 0) {
|
|
133
|
-
this.\u8FDE\u63A5\u6E05\u7406\u6A21\u578B.\u79FB\u9664\u76D1\u542C\u5668(\u6301\u6709\u8005);
|
|
134
|
-
delete this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id];
|
|
135
|
-
}
|
|
136
117
|
}
|
|
137
118
|
\u6CE8\u518Conmessage(id, ws\u53E5\u67C4) {
|
|
138
119
|
ws\u53E5\u67C4.onmessage = async (event) => {
|
|
@@ -154,10 +135,10 @@ var WebSocket\u7BA1\u7406\u5668 = class {
|
|
|
154
135
|
async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(id, \u6E05\u7406\u51FD\u6570) {
|
|
155
136
|
if (id in this.\u8FDE\u63A5\u8868) this.\u6E05\u7406\u51FD\u6570\u8868[id] = \u6E05\u7406\u51FD\u6570;
|
|
156
137
|
}
|
|
157
|
-
\u8BBE\u7F6E\u6D88\u606F\u76D1\u542C(id, \u56DE\u8C03\u51FD\u6570) {
|
|
138
|
+
\u8BBE\u7F6E\u6D88\u606F\u76D1\u542C(id, \u56DE\u8C03\u51FD\u6570, \u5BBF\u4E3B) {
|
|
158
139
|
let \u6A21\u578B = this.\u6D88\u606F\u76D1\u542C\u8868[id];
|
|
159
|
-
if (\u6A21\u578B === void 0) return
|
|
160
|
-
|
|
140
|
+
if (\u6A21\u578B === void 0) return;
|
|
141
|
+
\u6A21\u578B.\u6DFB\u52A0\u76D1\u542C\u5668(\u56DE\u8C03\u51FD\u6570, \u5BBF\u4E3B);
|
|
161
142
|
}
|
|
162
143
|
};
|
|
163
144
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
import { WebSocket } from 'ws';
|
|
2
|
-
import {
|
|
2
|
+
import { 集线器监听器宿主 as ________ } from './hub.cjs';
|
|
3
3
|
|
|
4
4
|
type id = string;
|
|
5
5
|
declare class WebSocket管理器 {
|
|
6
6
|
private log;
|
|
7
7
|
private 连接表;
|
|
8
8
|
private 消息监听表;
|
|
9
|
-
private 连接清理模型;
|
|
10
|
-
private 连接持有者表;
|
|
11
9
|
private 清理函数表;
|
|
12
|
-
增加连接(id: id, ws句柄: WebSocket):
|
|
10
|
+
增加连接(id: id, ws句柄: WebSocket): void;
|
|
13
11
|
删除连接(id: string): void;
|
|
14
12
|
private 注册onmessage;
|
|
15
13
|
查询连接存在(id: string): boolean;
|
|
16
14
|
获得ws句柄(id: id): Promise<WebSocket | null>;
|
|
17
15
|
设置清理函数(id: string, 清理函数: () => Promise<void>): Promise<void>;
|
|
18
|
-
设置消息监听(id: string, 回调函数: (数据: any) => Promise<void
|
|
16
|
+
设置消息监听(id: string, 回调函数: (数据: any) => Promise<void>, 宿主: ________): void;
|
|
19
17
|
}
|
|
20
18
|
|
|
21
19
|
export { WebSocket管理器 };
|
|
@@ -29,21 +29,14 @@ var import_ts_log = require("@lsby/ts-log");
|
|
|
29
29
|
var \u5168\u5C40\u65E5\u5FD7\u5355\u4F8B = new import_ts_log.Log("@lsby:net-core");
|
|
30
30
|
|
|
31
31
|
// src/global/model/hub.ts
|
|
32
|
-
var \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005 = class {
|
|
33
|
-
constructor(\u76D1\u542C\u5668) {
|
|
34
|
-
this.\u76D1\u542C\u5668 = \u76D1\u542C\u5668;
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
32
|
var \u96C6\u7EBF\u5668\u6A21\u578B = class _\u96C6\u7EBF\u5668\u6A21\u578B {
|
|
38
33
|
// 使用 WeakRef + FinalizationRegistry 防止"反向持有" this
|
|
39
34
|
static \u6E05\u7406\u6CE8\u518C\u5668 = new FinalizationRegistry(({ \u5B9E\u4F8B\u5F15\u7528, \u76D1\u542C\u5668 }) => {
|
|
40
35
|
let \u5B9E\u4F8B = \u5B9E\u4F8B\u5F15\u7528.deref();
|
|
41
36
|
if (\u5B9E\u4F8B === void 0) return;
|
|
42
|
-
|
|
43
|
-
if (\u7D22\u5F15 !== -1) \u5B9E\u4F8B.\u76D1\u542C\u5668\u5217\u8868.splice(\u7D22\u5F15, 1);
|
|
37
|
+
\u5B9E\u4F8B.\u76D1\u542C\u5668\u96C6\u5408.delete(\u76D1\u542C\u5668);
|
|
44
38
|
});
|
|
45
|
-
\u76D1\u542C\u5668\
|
|
46
|
-
\u6301\u6709\u8005\u6620\u5C04 = /* @__PURE__ */ new WeakMap();
|
|
39
|
+
\u76D1\u542C\u5668\u96C6\u5408 = /* @__PURE__ */ new Set();
|
|
47
40
|
\u9519\u8BEF\u5904\u7406\u5668 = null;
|
|
48
41
|
/**
|
|
49
42
|
* 设置广播错误时的处理器。
|
|
@@ -53,27 +46,26 @@ var \u96C6\u7EBF\u5668\u6A21\u578B = class _\u96C6\u7EBF\u5668\u6A21\u578B {
|
|
|
53
46
|
}
|
|
54
47
|
/**
|
|
55
48
|
* 注册监听器。
|
|
56
|
-
*
|
|
57
|
-
*
|
|
49
|
+
* 必须提供一个 `集线器监听器宿主` 实例。若宿主对象不被持有并被回收,监听器会在未来自动回收。
|
|
50
|
+
*
|
|
51
|
+
* ⚠️ 危险警告: 即使在该方法的同一逻辑层面的词法作用域内,若未显式调用 `宿主.解绑` 或保留长期强引用使用痕迹,
|
|
52
|
+
* 那么随着控制权转交和可达性缩减,仍然存在被 V8 提前进行垃圾回收而突然导致监听失效的极大风险。
|
|
53
|
+
* 建议详细阅读 `集线器监听器宿主` 类的文档备注以此警醒。
|
|
58
54
|
*/
|
|
59
|
-
\u6DFB\u52A0\u76D1\u542C\u5668(\u76D1\u542C\u5668) {
|
|
60
|
-
this.\u76D1\u542C\u5668\u5217\u8868.push(\u76D1\u542C\u5668);
|
|
61
|
-
let \u6301\u6709\u8005 = new \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005(\u76D1\u542C\u5668);
|
|
62
|
-
this.\u6301\u6709\u8005\u6620\u5C04.set(\u6301\u6709\u8005, \u76D1\u542C\u5668);
|
|
55
|
+
\u6DFB\u52A0\u76D1\u542C\u5668(\u76D1\u542C\u5668, \u5BBF\u4E3B) {
|
|
63
56
|
let \u5B9E\u4F8B\u5F31\u5F15\u7528 = new WeakRef(this);
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
_\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.
|
|
73
|
-
this.\u6301\u6709\u8005\u6620\u5C04.delete(\u6301\u6709\u8005);
|
|
57
|
+
\u5BBF\u4E3B.\u7ED1\u5B9A\u56DE\u8C03(() => {
|
|
58
|
+
let \u5B9E\u4F8B = \u5B9E\u4F8B\u5F31\u5F15\u7528.deref();
|
|
59
|
+
if (\u5B9E\u4F8B !== void 0) {
|
|
60
|
+
\u5B9E\u4F8B.\u76D1\u542C\u5668\u96C6\u5408.delete(\u76D1\u542C\u5668);
|
|
61
|
+
}
|
|
62
|
+
_\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.unregister(\u5BBF\u4E3B);
|
|
63
|
+
});
|
|
64
|
+
this.\u76D1\u542C\u5668\u96C6\u5408.add(\u76D1\u542C\u5668);
|
|
65
|
+
_\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.register(\u5BBF\u4E3B, { \u5B9E\u4F8B\u5F15\u7528: \u5B9E\u4F8B\u5F31\u5F15\u7528, \u76D1\u542C\u5668 }, \u5BBF\u4E3B);
|
|
74
66
|
}
|
|
75
67
|
async \u5E7F\u64AD(\u6570\u636E) {
|
|
76
|
-
let snapshot = [...this.\u76D1\u542C\u5668\
|
|
68
|
+
let snapshot = [...this.\u76D1\u542C\u5668\u96C6\u5408];
|
|
77
69
|
let \u7ED3\u679C = await Promise.allSettled(snapshot.map((l) => l(\u6570\u636E)));
|
|
78
70
|
for (let [\u7D22\u5F15, \u7ED3\u679C\u9879] of \u7ED3\u679C.entries()) {
|
|
79
71
|
if (\u7ED3\u679C\u9879.status === "rejected" && this.\u9519\u8BEF\u5904\u7406\u5668 !== null) {
|
|
@@ -88,8 +80,6 @@ var WebSocket\u7BA1\u7406\u5668 = class {
|
|
|
88
80
|
log = \u5168\u5C40\u65E5\u5FD7\u5355\u4F8B.extend("WebSocket\u7BA1\u7406\u5668");
|
|
89
81
|
\u8FDE\u63A5\u8868 = {};
|
|
90
82
|
\u6D88\u606F\u76D1\u542C\u8868 = {};
|
|
91
|
-
\u8FDE\u63A5\u6E05\u7406\u6A21\u578B = new \u96C6\u7EBF\u5668\u6A21\u578B();
|
|
92
|
-
\u8FDE\u63A5\u6301\u6709\u8005\u8868 = {};
|
|
93
83
|
\u6E05\u7406\u51FD\u6570\u8868 = {};
|
|
94
84
|
\u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
|
|
95
85
|
if (id in this.\u8FDE\u63A5\u8868) this.\u5220\u9664\u8FDE\u63A5(id);
|
|
@@ -102,15 +92,11 @@ var WebSocket\u7BA1\u7406\u5668 = class {
|
|
|
102
92
|
this.\u6D88\u606F\u76D1\u542C\u8868[id] = \u6A21\u578B;
|
|
103
93
|
}
|
|
104
94
|
this.\u6CE8\u518Conmessage(id, ws\u53E5\u67C4);
|
|
105
|
-
let \u6301\u6709\u8005 = this.\u8FDE\u63A5\u6E05\u7406\u6A21\u578B.\u6DFB\u52A0\u76D1\u542C\u5668(async () => {
|
|
106
|
-
if (id in this.\u8FDE\u63A5\u8868) this.\u5220\u9664\u8FDE\u63A5(id);
|
|
107
|
-
});
|
|
108
|
-
this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id] = \u6301\u6709\u8005;
|
|
109
|
-
return \u6301\u6709\u8005;
|
|
110
95
|
}
|
|
111
96
|
\u5220\u9664\u8FDE\u63A5(id) {
|
|
112
97
|
let ws = this.\u8FDE\u63A5\u8868[id];
|
|
113
|
-
if (ws
|
|
98
|
+
if (ws === void 0) return;
|
|
99
|
+
if (ws !== null) {
|
|
114
100
|
ws.onmessage = null;
|
|
115
101
|
ws.once("error", (err) => void this.log.error(`WebSocket \u5F02\u6B65\u9519\u8BEF, id: ${id}, \u9519\u8BEF: ${err}`));
|
|
116
102
|
ws.once(
|
|
@@ -128,11 +114,6 @@ var WebSocket\u7BA1\u7406\u5668 = class {
|
|
|
128
114
|
delete this.\u8FDE\u63A5\u8868[id];
|
|
129
115
|
delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
130
116
|
delete this.\u6D88\u606F\u76D1\u542C\u8868[id];
|
|
131
|
-
let \u6301\u6709\u8005 = this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id];
|
|
132
|
-
if (\u6301\u6709\u8005 !== void 0) {
|
|
133
|
-
this.\u8FDE\u63A5\u6E05\u7406\u6A21\u578B.\u79FB\u9664\u76D1\u542C\u5668(\u6301\u6709\u8005);
|
|
134
|
-
delete this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id];
|
|
135
|
-
}
|
|
136
117
|
}
|
|
137
118
|
\u6CE8\u518Conmessage(id, ws\u53E5\u67C4) {
|
|
138
119
|
ws\u53E5\u67C4.onmessage = async (event) => {
|
|
@@ -154,10 +135,10 @@ var WebSocket\u7BA1\u7406\u5668 = class {
|
|
|
154
135
|
async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(id, \u6E05\u7406\u51FD\u6570) {
|
|
155
136
|
if (id in this.\u8FDE\u63A5\u8868) this.\u6E05\u7406\u51FD\u6570\u8868[id] = \u6E05\u7406\u51FD\u6570;
|
|
156
137
|
}
|
|
157
|
-
\u8BBE\u7F6E\u6D88\u606F\u76D1\u542C(id, \u56DE\u8C03\u51FD\u6570) {
|
|
138
|
+
\u8BBE\u7F6E\u6D88\u606F\u76D1\u542C(id, \u56DE\u8C03\u51FD\u6570, \u5BBF\u4E3B) {
|
|
158
139
|
let \u6A21\u578B = this.\u6D88\u606F\u76D1\u542C\u8868[id];
|
|
159
|
-
if (\u6A21\u578B === void 0) return
|
|
160
|
-
|
|
140
|
+
if (\u6A21\u578B === void 0) return;
|
|
141
|
+
\u6A21\u578B.\u6DFB\u52A0\u76D1\u542C\u5668(\u56DE\u8C03\u51FD\u6570, \u5BBF\u4E3B);
|
|
161
142
|
}
|
|
162
143
|
};
|
|
163
144
|
|
package/dist/cjs/help/help.cjs
CHANGED
|
@@ -32,21 +32,14 @@ var import_ts_log = require("@lsby/ts-log");
|
|
|
32
32
|
var \u5168\u5C40\u65E5\u5FD7\u5355\u4F8B = new import_ts_log.Log("@lsby:net-core");
|
|
33
33
|
|
|
34
34
|
// src/global/model/hub.ts
|
|
35
|
-
var \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005 = class {
|
|
36
|
-
constructor(\u76D1\u542C\u5668) {
|
|
37
|
-
this.\u76D1\u542C\u5668 = \u76D1\u542C\u5668;
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
35
|
var \u96C6\u7EBF\u5668\u6A21\u578B = class _\u96C6\u7EBF\u5668\u6A21\u578B {
|
|
41
36
|
// 使用 WeakRef + FinalizationRegistry 防止"反向持有" this
|
|
42
37
|
static \u6E05\u7406\u6CE8\u518C\u5668 = new FinalizationRegistry(({ \u5B9E\u4F8B\u5F15\u7528, \u76D1\u542C\u5668 }) => {
|
|
43
38
|
let \u5B9E\u4F8B = \u5B9E\u4F8B\u5F15\u7528.deref();
|
|
44
39
|
if (\u5B9E\u4F8B === void 0) return;
|
|
45
|
-
|
|
46
|
-
if (\u7D22\u5F15 !== -1) \u5B9E\u4F8B.\u76D1\u542C\u5668\u5217\u8868.splice(\u7D22\u5F15, 1);
|
|
40
|
+
\u5B9E\u4F8B.\u76D1\u542C\u5668\u96C6\u5408.delete(\u76D1\u542C\u5668);
|
|
47
41
|
});
|
|
48
|
-
\u76D1\u542C\u5668\
|
|
49
|
-
\u6301\u6709\u8005\u6620\u5C04 = /* @__PURE__ */ new WeakMap();
|
|
42
|
+
\u76D1\u542C\u5668\u96C6\u5408 = /* @__PURE__ */ new Set();
|
|
50
43
|
\u9519\u8BEF\u5904\u7406\u5668 = null;
|
|
51
44
|
/**
|
|
52
45
|
* 设置广播错误时的处理器。
|
|
@@ -56,27 +49,26 @@ var \u96C6\u7EBF\u5668\u6A21\u578B = class _\u96C6\u7EBF\u5668\u6A21\u578B {
|
|
|
56
49
|
}
|
|
57
50
|
/**
|
|
58
51
|
* 注册监听器。
|
|
59
|
-
*
|
|
60
|
-
*
|
|
52
|
+
* 必须提供一个 `集线器监听器宿主` 实例。若宿主对象不被持有并被回收,监听器会在未来自动回收。
|
|
53
|
+
*
|
|
54
|
+
* ⚠️ 危险警告: 即使在该方法的同一逻辑层面的词法作用域内,若未显式调用 `宿主.解绑` 或保留长期强引用使用痕迹,
|
|
55
|
+
* 那么随着控制权转交和可达性缩减,仍然存在被 V8 提前进行垃圾回收而突然导致监听失效的极大风险。
|
|
56
|
+
* 建议详细阅读 `集线器监听器宿主` 类的文档备注以此警醒。
|
|
61
57
|
*/
|
|
62
|
-
\u6DFB\u52A0\u76D1\u542C\u5668(\u76D1\u542C\u5668) {
|
|
63
|
-
this.\u76D1\u542C\u5668\u5217\u8868.push(\u76D1\u542C\u5668);
|
|
64
|
-
let \u6301\u6709\u8005 = new \u96C6\u7EBF\u5668\u76D1\u542C\u5668\u6301\u6709\u8005(\u76D1\u542C\u5668);
|
|
65
|
-
this.\u6301\u6709\u8005\u6620\u5C04.set(\u6301\u6709\u8005, \u76D1\u542C\u5668);
|
|
58
|
+
\u6DFB\u52A0\u76D1\u542C\u5668(\u76D1\u542C\u5668, \u5BBF\u4E3B) {
|
|
66
59
|
let \u5B9E\u4F8B\u5F31\u5F15\u7528 = new WeakRef(this);
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
_\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.
|
|
76
|
-
this.\u6301\u6709\u8005\u6620\u5C04.delete(\u6301\u6709\u8005);
|
|
60
|
+
\u5BBF\u4E3B.\u7ED1\u5B9A\u56DE\u8C03(() => {
|
|
61
|
+
let \u5B9E\u4F8B = \u5B9E\u4F8B\u5F31\u5F15\u7528.deref();
|
|
62
|
+
if (\u5B9E\u4F8B !== void 0) {
|
|
63
|
+
\u5B9E\u4F8B.\u76D1\u542C\u5668\u96C6\u5408.delete(\u76D1\u542C\u5668);
|
|
64
|
+
}
|
|
65
|
+
_\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.unregister(\u5BBF\u4E3B);
|
|
66
|
+
});
|
|
67
|
+
this.\u76D1\u542C\u5668\u96C6\u5408.add(\u76D1\u542C\u5668);
|
|
68
|
+
_\u96C6\u7EBF\u5668\u6A21\u578B.\u6E05\u7406\u6CE8\u518C\u5668.register(\u5BBF\u4E3B, { \u5B9E\u4F8B\u5F15\u7528: \u5B9E\u4F8B\u5F31\u5F15\u7528, \u76D1\u542C\u5668 }, \u5BBF\u4E3B);
|
|
77
69
|
}
|
|
78
70
|
async \u5E7F\u64AD(\u6570\u636E) {
|
|
79
|
-
let snapshot = [...this.\u76D1\u542C\u5668\
|
|
71
|
+
let snapshot = [...this.\u76D1\u542C\u5668\u96C6\u5408];
|
|
80
72
|
let \u7ED3\u679C = await Promise.allSettled(snapshot.map((l) => l(\u6570\u636E)));
|
|
81
73
|
for (let [\u7D22\u5F15, \u7ED3\u679C\u9879] of \u7ED3\u679C.entries()) {
|
|
82
74
|
if (\u7ED3\u679C\u9879.status === "rejected" && this.\u9519\u8BEF\u5904\u7406\u5668 !== null) {
|
|
@@ -91,8 +83,6 @@ var WebSocket\u7BA1\u7406\u5668 = class {
|
|
|
91
83
|
log = \u5168\u5C40\u65E5\u5FD7\u5355\u4F8B.extend("WebSocket\u7BA1\u7406\u5668");
|
|
92
84
|
\u8FDE\u63A5\u8868 = {};
|
|
93
85
|
\u6D88\u606F\u76D1\u542C\u8868 = {};
|
|
94
|
-
\u8FDE\u63A5\u6E05\u7406\u6A21\u578B = new \u96C6\u7EBF\u5668\u6A21\u578B();
|
|
95
|
-
\u8FDE\u63A5\u6301\u6709\u8005\u8868 = {};
|
|
96
86
|
\u6E05\u7406\u51FD\u6570\u8868 = {};
|
|
97
87
|
\u589E\u52A0\u8FDE\u63A5(id, ws\u53E5\u67C4) {
|
|
98
88
|
if (id in this.\u8FDE\u63A5\u8868) this.\u5220\u9664\u8FDE\u63A5(id);
|
|
@@ -105,15 +95,11 @@ var WebSocket\u7BA1\u7406\u5668 = class {
|
|
|
105
95
|
this.\u6D88\u606F\u76D1\u542C\u8868[id] = \u6A21\u578B;
|
|
106
96
|
}
|
|
107
97
|
this.\u6CE8\u518Conmessage(id, ws\u53E5\u67C4);
|
|
108
|
-
let \u6301\u6709\u8005 = this.\u8FDE\u63A5\u6E05\u7406\u6A21\u578B.\u6DFB\u52A0\u76D1\u542C\u5668(async () => {
|
|
109
|
-
if (id in this.\u8FDE\u63A5\u8868) this.\u5220\u9664\u8FDE\u63A5(id);
|
|
110
|
-
});
|
|
111
|
-
this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id] = \u6301\u6709\u8005;
|
|
112
|
-
return \u6301\u6709\u8005;
|
|
113
98
|
}
|
|
114
99
|
\u5220\u9664\u8FDE\u63A5(id) {
|
|
115
100
|
let ws = this.\u8FDE\u63A5\u8868[id];
|
|
116
|
-
if (ws
|
|
101
|
+
if (ws === void 0) return;
|
|
102
|
+
if (ws !== null) {
|
|
117
103
|
ws.onmessage = null;
|
|
118
104
|
ws.once("error", (err) => void this.log.error(`WebSocket \u5F02\u6B65\u9519\u8BEF, id: ${id}, \u9519\u8BEF: ${err}`));
|
|
119
105
|
ws.once(
|
|
@@ -131,11 +117,6 @@ var WebSocket\u7BA1\u7406\u5668 = class {
|
|
|
131
117
|
delete this.\u8FDE\u63A5\u8868[id];
|
|
132
118
|
delete this.\u6E05\u7406\u51FD\u6570\u8868[id];
|
|
133
119
|
delete this.\u6D88\u606F\u76D1\u542C\u8868[id];
|
|
134
|
-
let \u6301\u6709\u8005 = this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id];
|
|
135
|
-
if (\u6301\u6709\u8005 !== void 0) {
|
|
136
|
-
this.\u8FDE\u63A5\u6E05\u7406\u6A21\u578B.\u79FB\u9664\u76D1\u542C\u5668(\u6301\u6709\u8005);
|
|
137
|
-
delete this.\u8FDE\u63A5\u6301\u6709\u8005\u8868[id];
|
|
138
|
-
}
|
|
139
120
|
}
|
|
140
121
|
\u6CE8\u518Conmessage(id, ws\u53E5\u67C4) {
|
|
141
122
|
ws\u53E5\u67C4.onmessage = async (event) => {
|
|
@@ -157,10 +138,10 @@ var WebSocket\u7BA1\u7406\u5668 = class {
|
|
|
157
138
|
async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(id, \u6E05\u7406\u51FD\u6570) {
|
|
158
139
|
if (id in this.\u8FDE\u63A5\u8868) this.\u6E05\u7406\u51FD\u6570\u8868[id] = \u6E05\u7406\u51FD\u6570;
|
|
159
140
|
}
|
|
160
|
-
\u8BBE\u7F6E\u6D88\u606F\u76D1\u542C(id, \u56DE\u8C03\u51FD\u6570) {
|
|
141
|
+
\u8BBE\u7F6E\u6D88\u606F\u76D1\u542C(id, \u56DE\u8C03\u51FD\u6570, \u5BBF\u4E3B) {
|
|
161
142
|
let \u6A21\u578B = this.\u6D88\u606F\u76D1\u542C\u8868[id];
|
|
162
|
-
if (\u6A21\u578B === void 0) return
|
|
163
|
-
|
|
143
|
+
if (\u6A21\u578B === void 0) return;
|
|
144
|
+
\u6A21\u578B.\u6DFB\u52A0\u76D1\u542C\u5668(\u56DE\u8C03\u51FD\u6570, \u5BBF\u4E3B);
|
|
164
145
|
}
|
|
165
146
|
};
|
|
166
147
|
|