sx-peerjs-http-util 1.1.0 → 1.2.0
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/README.md +20 -201
- package/dist/MessageHandler.d.ts +8 -0
- package/dist/MessageHandler.d.ts.map +1 -1
- package/dist/PeerJsWrapper.d.ts +89 -3
- package/dist/PeerJsWrapper.d.ts.map +1 -1
- package/dist/Router.d.ts +186 -0
- package/dist/Router.d.ts.map +1 -0
- package/dist/RoutingDB.d.ts +75 -0
- package/dist/RoutingDB.d.ts.map +1 -0
- package/dist/constants.d.ts +23 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +918 -199
- package/dist/index.esm.js.map +3 -3
- package/dist/index.umd.js +918 -199
- package/dist/index.umd.js.map +3 -3
- package/dist/types.d.ts +48 -7
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/Routing.d.ts +0 -88
- package/dist/Routing.d.ts.map +0 -1
package/dist/types.d.ts
CHANGED
|
@@ -27,17 +27,36 @@ export interface ServerConfig {
|
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
29
|
* 路由表条目
|
|
30
|
+
* 记录目标节点的可选下一跳列表,每个下一跳都有延迟信息
|
|
30
31
|
*/
|
|
31
32
|
export interface RouteEntry {
|
|
32
33
|
/** 目标节点 */
|
|
33
34
|
target: string;
|
|
34
|
-
/**
|
|
35
|
-
|
|
36
|
-
/**
|
|
35
|
+
/** 可选的下一跳列表(按延迟升序排列) */
|
|
36
|
+
nextHops: NextHop[];
|
|
37
|
+
/** 跳数(到目标的最小跳数) */
|
|
37
38
|
hops: number;
|
|
38
|
-
/**
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
/** 更新时间戳 */
|
|
40
|
+
timestamp: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 下一跳信息
|
|
44
|
+
*/
|
|
45
|
+
export interface NextHop {
|
|
46
|
+
/** 下一跳节点 ID */
|
|
47
|
+
nodeId: string;
|
|
48
|
+
/** 到目标的延迟(毫秒) */
|
|
49
|
+
latency: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* 直连节点延迟记录
|
|
53
|
+
*/
|
|
54
|
+
export interface DirectNodeLatency {
|
|
55
|
+
/** 节点 ID */
|
|
56
|
+
nodeId: string;
|
|
57
|
+
/** 直连延迟(毫秒) */
|
|
58
|
+
latency: number;
|
|
59
|
+
/** 更新时间戳 */
|
|
41
60
|
timestamp: number;
|
|
42
61
|
}
|
|
43
62
|
/**
|
|
@@ -52,7 +71,7 @@ export interface RelayConfig {
|
|
|
52
71
|
*/
|
|
53
72
|
export interface RelayMessage {
|
|
54
73
|
/** 消息类型 */
|
|
55
|
-
type: 'relay-request' | 'relay-response' | 'route-update';
|
|
74
|
+
type: 'relay-request' | 'relay-response' | 'route-update' | 'route-query' | 'route-response';
|
|
56
75
|
/** 消息 ID */
|
|
57
76
|
id: string;
|
|
58
77
|
/** 原始目标节点 */
|
|
@@ -61,6 +80,8 @@ export interface RelayMessage {
|
|
|
61
80
|
relayPath: string[];
|
|
62
81
|
/** 剩余可用转发节点列表 */
|
|
63
82
|
forwardPath: string[];
|
|
83
|
+
/** TTL(Time To Live)- 消息存活跳数,防止死循环 */
|
|
84
|
+
ttl?: number;
|
|
64
85
|
/** 请求数据 */
|
|
65
86
|
request?: Request;
|
|
66
87
|
/** 响应数据 */
|
|
@@ -70,6 +91,26 @@ export interface RelayMessage {
|
|
|
70
91
|
/** 可达节点列表 */
|
|
71
92
|
reachableNodes: string[];
|
|
72
93
|
};
|
|
94
|
+
/** 路由查询信息 */
|
|
95
|
+
routeQuery?: {
|
|
96
|
+
/** 查询的原始发起者 */
|
|
97
|
+
queryOrigin: string;
|
|
98
|
+
/** 查询目标节点 */
|
|
99
|
+
targetNode: string;
|
|
100
|
+
/** 查询经过的路径(防止循环) */
|
|
101
|
+
queryPath: string[];
|
|
102
|
+
};
|
|
103
|
+
/** 路由查询响应信息 */
|
|
104
|
+
routeResponse?: {
|
|
105
|
+
/** 查询的原始发起者 */
|
|
106
|
+
queryOrigin: string;
|
|
107
|
+
/** 响应者节点 */
|
|
108
|
+
responder: string;
|
|
109
|
+
/** 目标节点 */
|
|
110
|
+
targetNode: string;
|
|
111
|
+
/** 到目标的延迟(毫秒) */
|
|
112
|
+
latency: number;
|
|
113
|
+
};
|
|
73
114
|
}
|
|
74
115
|
/**
|
|
75
116
|
* 简化处理器函数类型(直接返回数据,自动装箱为 Response)
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,YAAY;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,WAAW;IACX,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/dist/Routing.d.ts
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* RoutingManager - 路由管理模块
|
|
3
|
-
*
|
|
4
|
-
* 负责中继通信的核心功能:
|
|
5
|
-
* - 维护已知的成功通信节点列表(knownNodes)
|
|
6
|
-
* - 维护路由表(routingTable)
|
|
7
|
-
* - 广播路由更新到邻居节点
|
|
8
|
-
* - 处理收到的路由更新消息
|
|
9
|
-
*
|
|
10
|
-
* 路由机制:
|
|
11
|
-
* 1. 每次成功通信后,记录对方节点为已知节点
|
|
12
|
-
* 2. 成功后广播路由更新,告知对方自己可达的节点
|
|
13
|
-
* 3. 收到路由更新后,合并到本地路由表
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* const routing = new RoutingManager(callbacks, { maxRelayNodes: 5 });
|
|
17
|
-
* routing.recordSuccessfulNode(peerId); // 记录成功节点
|
|
18
|
-
* routing.broadcastRouteUpdate(); // 广播路由
|
|
19
|
-
* const table = routing.getRoutingTable(); // 获取路由表
|
|
20
|
-
*/
|
|
21
|
-
import type { Peer } from 'peerjs';
|
|
22
|
-
import type { RouteEntry, RelayConfig, RelayMessage } from './types';
|
|
23
|
-
/**
|
|
24
|
-
* 路由管理器回调接口
|
|
25
|
-
*/
|
|
26
|
-
export interface RoutingCallbacks {
|
|
27
|
-
/** 获取本地 Peer ID */
|
|
28
|
-
getMyPeerId(): string;
|
|
29
|
-
/** 获取 PeerJS 实例 */
|
|
30
|
-
getPeerInstance(): Peer | null;
|
|
31
|
-
/** 调试日志函数 */
|
|
32
|
-
debugLog: (obj: string, event: string, data?: unknown) => void;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* 路由管理器类
|
|
36
|
-
* 负责维护路由表和节点发现
|
|
37
|
-
*/
|
|
38
|
-
export declare class RoutingManager {
|
|
39
|
-
/** 路由表:target -> RouteEntry */
|
|
40
|
-
private routingTable;
|
|
41
|
-
/** 已知的成功通信节点列表 */
|
|
42
|
-
private knownNodes;
|
|
43
|
-
/** 中继配置 */
|
|
44
|
-
private relayConfig;
|
|
45
|
-
/** 回调函数集合 */
|
|
46
|
-
private callbacks;
|
|
47
|
-
/**
|
|
48
|
-
* 创建路由管理器
|
|
49
|
-
* @param callbacks 回调函数集合
|
|
50
|
-
* @param relayConfig 中继配置(可选)
|
|
51
|
-
*/
|
|
52
|
-
constructor(callbacks: RoutingCallbacks, relayConfig?: RelayConfig);
|
|
53
|
-
/**
|
|
54
|
-
* 记录成功的通信节点
|
|
55
|
-
* 将成功通信的节点添加到已知节点列表
|
|
56
|
-
* @param nodeId 节点 ID
|
|
57
|
-
*/
|
|
58
|
-
recordSuccessfulNode(nodeId: string): void;
|
|
59
|
-
/**
|
|
60
|
-
* 广播路由更新
|
|
61
|
-
* 向所有已知节点发送路由更新消息,告知它们本节点可达的节点列表
|
|
62
|
-
*/
|
|
63
|
-
broadcastRouteUpdate(): Promise<void>;
|
|
64
|
-
/**
|
|
65
|
-
* 发送路由更新到指定节点
|
|
66
|
-
* @param targetId 目标节点 ID
|
|
67
|
-
* @param reachableNodes 可达的节点列表
|
|
68
|
-
*/
|
|
69
|
-
private sendRouteUpdate;
|
|
70
|
-
/**
|
|
71
|
-
* 处理收到的路由更新
|
|
72
|
-
* 合并对端发来的可达节点信息到本地路由表
|
|
73
|
-
* @param fromPeerId 发送路由更新的节点 ID
|
|
74
|
-
* @param message 路由更新消息
|
|
75
|
-
*/
|
|
76
|
-
handleRouteUpdate(fromPeerId: string, message: RelayMessage): void;
|
|
77
|
-
/**
|
|
78
|
-
* 获取路由表(用于调试和显示)
|
|
79
|
-
* @returns 路由表对象
|
|
80
|
-
*/
|
|
81
|
-
getRoutingTable(): Record<string, RouteEntry>;
|
|
82
|
-
/**
|
|
83
|
-
* 获取已知节点列表
|
|
84
|
-
* @returns 已知节点 ID 数组
|
|
85
|
-
*/
|
|
86
|
-
getKnownNodes(): string[];
|
|
87
|
-
}
|
|
88
|
-
//# sourceMappingURL=Routing.d.ts.map
|
package/dist/Routing.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Routing.d.ts","sourceRoot":"","sources":["../src/Routing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB;IACnB,WAAW,IAAI,MAAM,CAAC;IACtB,mBAAmB;IACnB,eAAe,IAAI,IAAI,GAAG,IAAI,CAAC;IAC/B,aAAa;IACb,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAChE;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,+BAA+B;IAC/B,OAAO,CAAC,YAAY,CAAiC;IACrD,kBAAkB;IAClB,OAAO,CAAC,UAAU,CAAgB;IAClC,WAAW;IACX,OAAO,CAAC,WAAW,CAAc;IACjC,aAAa;IACb,OAAO,CAAC,SAAS,CAAmB;IAEpC;;;;OAIG;gBACS,SAAS,EAAE,gBAAgB,EAAE,WAAW,CAAC,EAAE,WAAW;IAKlE;;;;OAIG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAe1C;;;OAGG;IACG,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3C;;;;OAIG;YACW,eAAe;IA2C7B;;;;;OAKG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IA6BlE;;;OAGG;IACH,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;IAQ7C;;;OAGG;IACH,aAAa,IAAI,MAAM,EAAE;CAG1B"}
|