model-action 2.2.8 → 2.3.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.
@@ -6,11 +6,21 @@ export interface SendParam {
6
6
  [key: string]: any;
7
7
  };
8
8
  }
9
+ /** 三维返回的原始消息体 */
10
+ export interface IncomingRawMessage {
11
+ cmd?: string;
12
+ data: any;
13
+ requestId?: string;
14
+ chunkIndex?: number | string;
15
+ chunkNum?: number | string;
16
+ message?: string;
17
+ code?: string | number;
18
+ }
9
19
  export declare class Action {
10
20
  private static pendingRequests;
11
21
  private static onLog?;
12
- /** 正在组装的分包(同一时间仅处理一条分包流;并行多条需三维在每段携带 requestId,见 tryExtractRequestId) */
13
- private static chunkAssembly;
22
+ /** 正在组装的分包,key requestId,支持多条分包流并行 */
23
+ private static chunkAssemblies;
14
24
  private static defaultTimeout;
15
25
  static setOnLog(onLog?: (...args: any[]) => void): void;
16
26
  /**
@@ -22,16 +32,13 @@ export declare class Action {
22
32
  * 注意:三维系统保证在响应中返回 requestId,因此通过 requestId 精确匹配请求
23
33
  * @param responseData 响应数据,必须包含 requestId 字段
24
34
  */
35
+ private static hasChunkFields;
25
36
  /**
26
- * JSON 片段中尽早解析 requestId(用于日志;分包并行时需首段或中段出现该字段)
27
- */
28
- private static tryExtractRequestId;
29
- /**
30
- * 处理 peer-stream 收到的一条原始消息(支持未分包 JSON 与 -S/-I/-E 分包)
31
- * @param raw 字符串:整段 JSON,或以 -S / -I / -E 开头的分包片段
32
- * @param onMessage 与 Init 中一致的业务回调(收到完整一条 JSON 后调用一次)
37
+ * 处理 peer-stream 收到的一条原始消息(对象格式;可选 chunkIndex/chunkNum 分包)
38
+ * @param raw 三维消息字符串
39
+ * @param onMessage 与 Init 中一致的业务回调(拼包完成或单包时,对 data 解析结果调用一次)
33
40
  */
34
- static handleIncomingRawMessage(raw: string | object, onMessage?: (data: any) => void): void;
41
+ static handleIncomingRawMessage(raw: string, onMessage?: (data: any) => void): void;
35
42
  static handleResponse(responseData: any): void;
36
43
  /**
37
44
  * 发送到model
@@ -1 +1 @@
1
- {"version":3,"file":"Action.d.ts","sourceRoot":"","sources":["../../src/modules/Action.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEnF,MAAM,WAAW,SAAS;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE;QACF,MAAM,EAAE,MAAM,CAAC;QACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACtB,CAAC;CACL;AAeD,qBAAa,MAAM;IAEf,OAAO,CAAC,MAAM,CAAC,eAAe,CAAqC;IACnE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAA2B;IAEhD,yEAAyE;IACzE,OAAO,CAAC,MAAM,CAAC,aAAa,CAA8B;IAG1D,OAAO,CAAC,MAAM,CAAC,cAAc,CAAS;IAEtC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI;IAIhD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAIhC;;;;OAIG;IACH;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAKlC;;;;OAIG;IACH,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;IA8FrF,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,GAAG;IAgBvC;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,SAAS,EAChC,KAAK,EAAE,CAAC,EACR,GAAG,GAAE,MAAW,EAChB,OAAO,GAAE,MAA4B,GACtC,OAAO,CAAC,GAAG,CAAC;CAwClB"}
1
+ {"version":3,"file":"Action.d.ts","sourceRoot":"","sources":["../../src/modules/Action.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEnF,MAAM,WAAW,SAAS;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE;QACF,MAAM,EAAE,MAAM,CAAC;QACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACtB,CAAC;CACL;AASD,iBAAiB;AACjB,MAAM,WAAW,kBAAkB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,GAAG,CAAC;IACV,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAQD,qBAAa,MAAM;IAEf,OAAO,CAAC,MAAM,CAAC,eAAe,CAAqC;IACnE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAA2B;IAEhD,wCAAwC;IACxC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAyC;IAGvE,OAAO,CAAC,MAAM,CAAC,cAAc,CAAS;IAEtC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI;IAIhD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAIhC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAK7B;;;;OAIG;IACH,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI;IA2E5E,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,GAAG;IAgBvC;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,SAAS,EAChC,KAAK,EAAE,CAAC,EACR,GAAG,GAAE,MAAW,EAChB,OAAO,GAAE,MAA4B,GACtC,OAAO,CAAC,GAAG,CAAC;CAwClB"}
@@ -13,107 +13,81 @@ export class Action {
13
13
  * 注意:三维系统保证在响应中返回 requestId,因此通过 requestId 精确匹配请求
14
14
  * @param responseData 响应数据,必须包含 requestId 字段
15
15
  */
16
- /**
17
- * JSON 片段中尽早解析 requestId(用于日志;分包并行时需首段或中段出现该字段)
18
- */
19
- static tryExtractRequestId(jsonPrefix) {
20
- const m = jsonPrefix.match(/"requestId"\s*:\s*"([^"]+)"/);
21
- return m ? m[1] : null;
16
+ static hasChunkFields(msg) {
17
+ return msg.chunkIndex !== undefined && msg.chunkIndex !== null
18
+ && msg.chunkNum !== undefined && msg.chunkNum !== null;
22
19
  }
23
20
  /**
24
- * 处理 peer-stream 收到的一条原始消息(支持未分包 JSON 与 -S/-I/-E 分包)
25
- * @param raw 字符串:整段 JSON,或以 -S / -I / -E 开头的分包片段
26
- * @param onMessage 与 Init 中一致的业务回调(收到完整一条 JSON 后调用一次)
21
+ * 处理 peer-stream 收到的一条原始消息(对象格式;可选 chunkIndex/chunkNum 分包)
22
+ * @param raw 三维消息字符串
23
+ * @param onMessage 与 Init 中一致的业务回调(拼包完成或单包时,对 data 解析结果调用一次)
27
24
  */
28
25
  static handleIncomingRawMessage(raw, onMessage) {
29
- var _a, _b, _c, _d, _e, _f, _g;
30
- if (typeof raw !== 'string') {
31
- const data = raw;
26
+ var _a, _b, _c, _d, _e;
27
+ const msg = JSON.parse(raw);
28
+ if (!this.hasChunkFields(msg)) {
29
+ const data = msg.data;
32
30
  this.handleResponse(data);
33
31
  onMessage === null || onMessage === void 0 ? void 0 : onMessage(data);
32
+ (_a = this.onLog) === null || _a === void 0 ? void 0 : _a.call(this, {
33
+ content: `收到三维消息: ${JSON.stringify(data)}`,
34
+ operTime: +new Date().getTime(),
35
+ });
34
36
  return;
35
37
  }
36
- const isChunk = raw.startsWith('-S') || raw.startsWith('-I') || raw.startsWith('-E');
37
- if (!isChunk) {
38
- let data;
39
- try {
40
- data = JSON.parse(raw);
41
- }
42
- catch (e) {
43
- console.error('解析消息失败:', e);
44
- (_a = this.onLog) === null || _a === void 0 ? void 0 : _a.call(this, {
45
- content: `解析消息失败: ${e}`,
46
- operTime: +new Date().getTime(),
47
- });
48
- return;
49
- }
50
- this.handleResponse(data);
51
- onMessage === null || onMessage === void 0 ? void 0 : onMessage(data);
38
+ const requestId = msg.requestId;
39
+ if (!requestId) {
40
+ console.error('分包消息缺少 requestId');
52
41
  (_b = this.onLog) === null || _b === void 0 ? void 0 : _b.call(this, {
53
- content: `收到三维消息: ${JSON.stringify(data)}`,
42
+ content: '分包消息缺少 requestId',
54
43
  operTime: +new Date().getTime(),
55
44
  });
56
45
  return;
57
46
  }
58
- const tag = raw.slice(0, 2);
59
- const body = raw.slice(2);
60
- if (tag === '-S') {
61
- if (this.chunkAssembly) {
62
- console.warn('分包消息: 收到新的 -S,丢弃未拼完的上一包');
63
- (_c = this.onLog) === null || _c === void 0 ? void 0 : _c.call(this, {
64
- content: `分包消息: 收到新的 -S,丢弃未拼完的上一包`,
65
- operTime: +new Date().getTime(),
66
- });
67
- }
68
- this.chunkAssembly = { buffer: body, requestId: this.tryExtractRequestId(body) };
47
+ const chunkIndex = Number(msg.chunkIndex);
48
+ const chunkNum = Number(msg.chunkNum);
49
+ if (!Number.isFinite(chunkIndex) || !Number.isFinite(chunkNum) || chunkNum < 1) {
50
+ console.error('分包消息 chunkIndex/chunkNum 无效:', msg.chunkIndex, msg.chunkNum);
69
51
  return;
70
52
  }
71
- if (tag === '-I') {
72
- if (!this.chunkAssembly) {
73
- console.error('分包消息: 收到 -I 但缺少前置 -S');
74
- (_d = this.onLog) === null || _d === void 0 ? void 0 : _d.call(this, {
75
- content: `分包消息: 收到 -I 但缺少前置 -S`,
76
- operTime: +new Date().getTime(),
77
- });
78
- return;
79
- }
80
- this.chunkAssembly.buffer += body;
81
- if (!this.chunkAssembly.requestId) {
82
- this.chunkAssembly.requestId = this.tryExtractRequestId(this.chunkAssembly.buffer);
83
- }
53
+ const fragment = typeof msg.data === 'string' ? msg.data : String((_c = msg.data) !== null && _c !== void 0 ? _c : '');
54
+ let state = this.chunkAssemblies.get(requestId);
55
+ if (!state) {
56
+ state = { chunks: new Map(), chunkNum };
57
+ this.chunkAssemblies.set(requestId, state);
58
+ }
59
+ else if (state.chunkNum !== chunkNum) {
60
+ console.warn(`分包消息 requestId=${requestId}: chunkNum 不一致,重置组装`);
61
+ state = { chunks: new Map(), chunkNum };
62
+ this.chunkAssemblies.set(requestId, state);
63
+ }
64
+ state.chunks.set(chunkIndex, fragment);
65
+ if (state.chunks.size < chunkNum) {
84
66
  return;
85
67
  }
86
- if (tag === '-E') {
87
- if (!this.chunkAssembly) {
88
- console.error('分包消息: 收到 -E 但缺少前置 -S');
89
- (_e = this.onLog) === null || _e === void 0 ? void 0 : _e.call(this, {
90
- content: `分包消息: 收到 -E 但缺少前置 -S`,
91
- operTime: +new Date().getTime(),
92
- });
93
- return;
94
- }
95
- this.chunkAssembly.buffer += body;
96
- const fullJson = this.chunkAssembly.buffer;
97
- this.chunkAssembly = null;
98
- let data;
99
- try {
100
- data = JSON.parse(fullJson);
101
- }
102
- catch (e) {
103
- console.error('分包消息 JSON 解析失败:', e);
104
- (_f = this.onLog) === null || _f === void 0 ? void 0 : _f.call(this, {
105
- content: `分包消息 JSON 解析失败: ${e}`,
106
- operTime: +new Date().getTime(),
107
- });
108
- return;
109
- }
110
- this.handleResponse(data);
111
- onMessage === null || onMessage === void 0 ? void 0 : onMessage(data);
112
- (_g = this.onLog) === null || _g === void 0 ? void 0 : _g.call(this, {
113
- content: `收到三维分包消息: ${JSON.stringify(data)}`,
68
+ const fullJson = [...state.chunks.entries()]
69
+ .sort((a, b) => a[0] - b[0])
70
+ .map(([, part]) => part)
71
+ .join('');
72
+ this.chunkAssemblies.delete(requestId);
73
+ let data;
74
+ try {
75
+ data = JSON.parse(fullJson);
76
+ }
77
+ catch (e) {
78
+ console.error('分包消息 JSON 解析失败:', e);
79
+ (_d = this.onLog) === null || _d === void 0 ? void 0 : _d.call(this, {
80
+ content: `分包消息 JSON 解析失败: ${e}`,
114
81
  operTime: +new Date().getTime(),
115
82
  });
83
+ return;
116
84
  }
85
+ this.handleResponse(data);
86
+ onMessage === null || onMessage === void 0 ? void 0 : onMessage(data);
87
+ (_e = this.onLog) === null || _e === void 0 ? void 0 : _e.call(this, {
88
+ content: `收到三维分包消息: ${JSON.stringify(data)}`,
89
+ operTime: +new Date().getTime(),
90
+ });
117
91
  }
118
92
  static handleResponse(responseData) {
119
93
  // 通过 requestId 精确匹配请求(三维系统保证返回 requestId)
@@ -174,8 +148,8 @@ export class Action {
174
148
  }
175
149
  // 存储待处理的请求,key 为 requestId
176
150
  Action.pendingRequests = new Map();
177
- /** 正在组装的分包(同一时间仅处理一条分包流;并行多条需三维在每段携带 requestId,见 tryExtractRequestId) */
178
- Action.chunkAssembly = null;
151
+ /** 正在组装的分包,key requestId,支持多条分包流并行 */
152
+ Action.chunkAssemblies = new Map();
179
153
  // 默认超时时间(毫秒)
180
154
  Action.defaultTimeout = 10000;
181
155
  //# sourceMappingURL=Action.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Action.js","sourceRoot":"","sources":["../../src/modules/Action.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Action.js","sourceRoot":"","sources":["../../src/modules/Action.ts"],"names":[],"mappings":"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"}
@@ -34,7 +34,7 @@ export class InitAction extends Action {
34
34
  if (ps.registerMouseHoverEvents) {
35
35
  ps.registerMouseHoverEvents();
36
36
  }
37
- // 监听消息事件(含三维大包 -S/-I/-E 分包拼包后,再 handleResponse + onMessage)
37
+ // 监听消息事件(含三维大包 chunkIndex/chunkNum 分包拼包后,再 handleResponse + onMessage)
38
38
  ps.addEventListener("message", (e) => {
39
39
  try {
40
40
  Action.handleIncomingRawMessage(e.detail, options.onMessage);
@@ -1 +1 @@
1
- {"version":3,"file":"Init.js","sourceRoot":"","sources":["../../src/modules/Init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Init.js","sourceRoot":"","sources":["../../src/modules/Init.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "model-action",
3
- "version": "2.2.8",
3
+ "version": "2.3.1",
4
4
  "description": "与三维交互api",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -15,10 +15,21 @@ interface PendingRequest {
15
15
  timeout: ReturnType<typeof setTimeout>;
16
16
  }
17
17
 
18
- /** 三维大包分包:首包 -S、中间 -I、末包 -E,拼接后为完整 JSON 字符串(与未分包时一致) */
19
- interface ChunkAssembly {
20
- buffer: string;
21
- requestId: string | null;
18
+ /** 三维返回的原始消息体 */
19
+ export interface IncomingRawMessage {
20
+ cmd?: string;
21
+ data: any;
22
+ requestId?: string;
23
+ chunkIndex?: number | string;
24
+ chunkNum?: number | string;
25
+ message?: string;
26
+ code?: string | number;
27
+ }
28
+
29
+ /** 按 requestId 组装分包:chunkIndex 为序号,chunkNum 为总片数,data 为字符串片段 */
30
+ interface ChunkAssemblyState {
31
+ chunks: Map<number, string>;
32
+ chunkNum: number;
22
33
  }
23
34
 
24
35
  export class Action {
@@ -26,8 +37,8 @@ export class Action {
26
37
  private static pendingRequests = new Map<string, PendingRequest>();
27
38
  private static onLog?: (...args: any[]) => void;
28
39
 
29
- /** 正在组装的分包(同一时间仅处理一条分包流;并行多条需三维在每段携带 requestId,见 tryExtractRequestId) */
30
- private static chunkAssembly: ChunkAssembly | null = null;
40
+ /** 正在组装的分包,key requestId,支持多条分包流并行 */
41
+ private static chunkAssemblies = new Map<string, ChunkAssemblyState>();
31
42
 
32
43
  // 默认超时时间(毫秒)
33
44
  private static defaultTimeout = 10000;
@@ -48,40 +59,21 @@ export class Action {
48
59
  * 注意:三维系统保证在响应中返回 requestId,因此通过 requestId 精确匹配请求
49
60
  * @param responseData 响应数据,必须包含 requestId 字段
50
61
  */
51
- /**
52
- * JSON 片段中尽早解析 requestId(用于日志;分包并行时需首段或中段出现该字段)
53
- */
54
- private static tryExtractRequestId(jsonPrefix: string): string | null {
55
- const m = jsonPrefix.match(/"requestId"\s*:\s*"([^"]+)"/);
56
- return m ? m[1] : null;
62
+ private static hasChunkFields(msg: IncomingRawMessage): boolean {
63
+ return msg.chunkIndex !== undefined && msg.chunkIndex !== null
64
+ && msg.chunkNum !== undefined && msg.chunkNum !== null;
57
65
  }
58
66
 
59
67
  /**
60
- * 处理 peer-stream 收到的一条原始消息(支持未分包 JSON 与 -S/-I/-E 分包)
61
- * @param raw 字符串:整段 JSON,或以 -S / -I / -E 开头的分包片段
62
- * @param onMessage 与 Init 中一致的业务回调(收到完整一条 JSON 后调用一次)
68
+ * 处理 peer-stream 收到的一条原始消息(对象格式;可选 chunkIndex/chunkNum 分包)
69
+ * @param raw 三维消息字符串
70
+ * @param onMessage 与 Init 中一致的业务回调(拼包完成或单包时,对 data 解析结果调用一次)
63
71
  */
64
- static handleIncomingRawMessage(raw: string | object, onMessage?: (data: any) => void) {
65
- if (typeof raw !== 'string') {
66
- const data = raw as any;
67
- this.handleResponse(data);
68
- onMessage?.(data);
69
- return;
70
- }
72
+ static handleIncomingRawMessage(raw: string, onMessage?: (data: any) => void) {
73
+ const msg = JSON.parse(raw as string) as IncomingRawMessage;
71
74
 
72
- const isChunk = raw.startsWith('-S') || raw.startsWith('-I') || raw.startsWith('-E');
73
- if (!isChunk) {
74
- let data: any;
75
- try {
76
- data = JSON.parse(raw);
77
- } catch (e) {
78
- console.error('解析消息失败:', e);
79
- this.onLog?.({
80
- content: `解析消息失败: ${e}`,
81
- operTime: +new Date().getTime(),
82
- });
83
- return;
84
- }
75
+ if (!this.hasChunkFields(msg)) {
76
+ const data = msg.data;
85
77
  this.handleResponse(data);
86
78
  onMessage?.(data);
87
79
  this.onLog?.({
@@ -91,68 +83,65 @@ export class Action {
91
83
  return;
92
84
  }
93
85
 
94
- const tag = raw.slice(0, 2);
95
- const body = raw.slice(2);
96
-
97
- if (tag === '-S') {
98
- if (this.chunkAssembly) {
99
- console.warn('分包消息: 收到新的 -S,丢弃未拼完的上一包');
100
- this.onLog?.({
101
- content: `分包消息: 收到新的 -S,丢弃未拼完的上一包`,
102
- operTime: +new Date().getTime(),
103
- });
104
- }
105
- this.chunkAssembly = { buffer: body, requestId: this.tryExtractRequestId(body) };
86
+ const requestId = msg.requestId;
87
+ if (!requestId) {
88
+ console.error('分包消息缺少 requestId');
89
+ this.onLog?.({
90
+ content: '分包消息缺少 requestId',
91
+ operTime: +new Date().getTime(),
92
+ });
106
93
  return;
107
94
  }
108
95
 
109
- if (tag === '-I') {
110
- if (!this.chunkAssembly) {
111
- console.error('分包消息: 收到 -I 但缺少前置 -S');
112
- this.onLog?.({
113
- content: `分包消息: 收到 -I 但缺少前置 -S`,
114
- operTime: +new Date().getTime(),
115
- });
116
- return;
117
- }
118
- this.chunkAssembly.buffer += body;
119
- if (!this.chunkAssembly.requestId) {
120
- this.chunkAssembly.requestId = this.tryExtractRequestId(this.chunkAssembly.buffer);
121
- }
96
+ const chunkIndex = Number(msg.chunkIndex);
97
+ const chunkNum = Number(msg.chunkNum);
98
+ if (!Number.isFinite(chunkIndex) || !Number.isFinite(chunkNum) || chunkNum < 1) {
99
+ console.error('分包消息 chunkIndex/chunkNum 无效:', msg.chunkIndex, msg.chunkNum);
122
100
  return;
123
101
  }
124
102
 
125
- if (tag === '-E') {
126
- if (!this.chunkAssembly) {
127
- console.error('分包消息: 收到 -E 但缺少前置 -S');
128
- this.onLog?.({
129
- content: `分包消息: 收到 -E 但缺少前置 -S`,
130
- operTime: +new Date().getTime(),
131
- });
132
- return;
133
- }
134
- this.chunkAssembly.buffer += body;
135
- const fullJson = this.chunkAssembly.buffer;
136
- this.chunkAssembly = null;
103
+ const fragment = typeof msg.data === 'string' ? msg.data : String(msg.data ?? '');
137
104
 
138
- let data: any;
139
- try {
140
- data = JSON.parse(fullJson);
141
- } catch (e) {
142
- console.error('分包消息 JSON 解析失败:', e);
143
- this.onLog?.({
144
- content: `分包消息 JSON 解析失败: ${e}`,
145
- operTime: +new Date().getTime(),
146
- });
147
- return;
148
- }
149
- this.handleResponse(data);
150
- onMessage?.(data);
105
+ let state = this.chunkAssemblies.get(requestId);
106
+ if (!state) {
107
+ state = { chunks: new Map(), chunkNum };
108
+ this.chunkAssemblies.set(requestId, state);
109
+ } else if (state.chunkNum !== chunkNum) {
110
+ console.warn(`分包消息 requestId=${requestId}: chunkNum 不一致,重置组装`);
111
+ state = { chunks: new Map(), chunkNum };
112
+ this.chunkAssemblies.set(requestId, state);
113
+ }
114
+
115
+ state.chunks.set(chunkIndex, fragment);
116
+
117
+ if (state.chunks.size < chunkNum) {
118
+ return;
119
+ }
120
+
121
+ const fullJson = [...state.chunks.entries()]
122
+ .sort((a, b) => a[0] - b[0])
123
+ .map(([, part]) => part)
124
+ .join('');
125
+ this.chunkAssemblies.delete(requestId);
126
+
127
+ let data: any;
128
+ try {
129
+ data = JSON.parse(fullJson);
130
+ } catch (e) {
131
+ console.error('分包消息 JSON 解析失败:', e);
151
132
  this.onLog?.({
152
- content: `收到三维分包消息: ${JSON.stringify(data)}`,
133
+ content: `分包消息 JSON 解析失败: ${e}`,
153
134
  operTime: +new Date().getTime(),
154
135
  });
136
+ return;
155
137
  }
138
+
139
+ this.handleResponse(data);
140
+ onMessage?.(data);
141
+ this.onLog?.({
142
+ content: `收到三维分包消息: ${JSON.stringify(data)}`,
143
+ operTime: +new Date().getTime(),
144
+ });
156
145
  }
157
146
 
158
147
  static handleResponse(responseData: any) {
@@ -57,7 +57,7 @@ export class InitAction extends Action {
57
57
  ps.registerMouseHoverEvents();
58
58
  }
59
59
 
60
- // 监听消息事件(含三维大包 -S/-I/-E 分包拼包后,再 handleResponse + onMessage)
60
+ // 监听消息事件(含三维大包 chunkIndex/chunkNum 分包拼包后,再 handleResponse + onMessage)
61
61
  ps.addEventListener("message", (e: any) => {
62
62
  try {
63
63
  Action.handleIncomingRawMessage(e.detail, options.onMessage);