model-action 2.2.7 → 2.3.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.
@@ -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 三维消息对象,无分包时 data 为 JSON 对象;有分包时 data 为字符串片段
39
+ * @param onMessage 与 Init 中一致的业务回调(拼包完成或单包时,对 data 解析结果调用一次)
33
40
  */
34
- static handleIncomingRawMessage(raw: string | object, onMessage?: (data: any) => void): void;
41
+ static handleIncomingRawMessage(raw: object, 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 三维消息对象,无分包时 data JSON 对象;有分包时 data 为字符串片段
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 = 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":"AAkCA,MAAM,OAAO,MAAM;IAWf,MAAM,CAAC,QAAQ,CAAC,KAAgC;QAC5C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,iBAAiB;QAC5B,OAAO,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAC1E,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,cAAc,CAAC,GAAuB;QACjD,OAAO,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,KAAK,IAAI;eACvD,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,wBAAwB,CAAC,GAAW,EAAE,SAA+B;;QACxE,MAAM,GAAG,GAAG,GAAyB,CAAC;QAEtC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC1B,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAG,IAAI,CAAC,CAAC;YAClB,MAAA,IAAI,CAAC,KAAK,qDAAG;gBACT,OAAO,EAAE,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAC1C,QAAQ,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;aAClC,CAAC,CAAC;YACH,OAAO;QACX,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAClC,MAAA,IAAI,CAAC,KAAK,qDAAG;gBACT,OAAO,EAAE,kBAAkB;gBAC3B,QAAQ,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;aAClC,CAAC,CAAC;YACH,OAAO;QACX,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YAC7E,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC5E,OAAO;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAA,GAAG,CAAC,IAAI,mCAAI,EAAE,CAAC,CAAC;QAElF,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,KAAK,GAAG,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC;YACxC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,kBAAkB,SAAS,qBAAqB,CAAC,CAAC;YAC/D,KAAK,GAAG,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC;YACxC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEvC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,QAAQ,EAAE,CAAC;YAC/B,OAAO;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;aACvC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;aACvB,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEvC,IAAI,IAAS,CAAC;QACd,IAAI,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;YACpC,MAAA,IAAI,CAAC,KAAK,qDAAG;gBACT,OAAO,EAAE,mBAAmB,CAAC,EAAE;gBAC/B,QAAQ,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;aAClC,CAAC,CAAC;YACH,OAAO;QACX,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC1B,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAG,IAAI,CAAC,CAAC;QAClB,MAAA,IAAI,CAAC,KAAK,qDAAG;YACT,OAAO,EAAE,aAAa,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC5C,QAAQ,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;SAClC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,YAAiB;QACnC,0CAA0C;QAC1C,IAAI,YAAY,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAE,CAAC;YAClE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAEpD,4BAA4B;YAC5B,IAAI,YAAY,CAAC,IAAI,KAAK,GAAG,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACvD,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC;YAC9D,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CACZ,KAAQ,EACR,MAAc,EAAE,EAChB,UAAkB,IAAI,CAAC,cAAc;QAErC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;;YACnC,WAAW;YACX,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAE3C,qBAAqB;YACrB,MAAM,WAAW,mCACV,KAAK,KACR,SAAS,GACZ,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;YACzD,MAAA,IAAI,CAAC,KAAK,qDAAG;gBACT,OAAO,EAAE,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;gBACxD,QAAQ,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;aAClC,CAAC,CAAC;YAEH,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;gBAClC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACvC,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,GAAG,eAAe,SAAS,GAAG,CAAC,CAAC,CAAC;YAC1E,CAAC,EAAE,OAAO,CAAC,CAAC;YAEZ,4BAA4B;YAC5B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE;gBAChC,OAAO;gBACP,MAAM;gBACN,OAAO,EAAE,aAAa;aACzB,CAAC,CAAC;YAEH,iEAAiE;YACjE,IAAI,CAAC;gBACD,MAAC,MAAc,CAAC,EAAE,0CAAE,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;YACjE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,YAAY,CAAC,aAAa,CAAC,CAAC;gBAC5B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACvC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAChC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;;AAjLD,2BAA2B;AACZ,sBAAe,GAAG,IAAI,GAAG,EAA0B,CAAC;AAGnE,wCAAwC;AACzB,sBAAe,GAAG,IAAI,GAAG,EAA8B,CAAC;AAEvE,aAAa;AACE,qBAAc,GAAG,KAAK,CAAC"}
@@ -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":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,oCAAoC;AACpC,OAAO,mBAAmB,CAAC;AAmB3B,MAAM,OAAO,UAAW,SAAQ,MAAM;IAClC;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,OAAyB;QACtC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/B,0BAA0B;QAC1B,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,CAAQ,CAAC;QAEzE,OAAO;QACP,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QACxB,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,EAAE,CAAC,KAAK,CAAC,gBAAgB,GAAG,WAAW,CAAC;QACxC,EAAE,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC;QAClC,EAAE,CAAC,KAAK,CAAC,kBAAkB,GAAG,QAAQ,CAAC;QACvC,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;QACtB,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC;QACrB,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAE/B,oBAAoB;QACpB,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;QAEtB,kBAAkB;QAClB,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAElC,YAAY;QACZ,IAAI,EAAE,CAAC,sBAAsB,EAAE,CAAC;YAC5B,EAAE,CAAC,sBAAsB,EAAE,CAAC;QAChC,CAAC;QACD,IAAI,EAAE,CAAC,wBAAwB,EAAE,CAAC;YAC9B,EAAE,CAAC,wBAAwB,EAAE,CAAC;QAClC,CAAC;QAED,uEAAuE;QACvE,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAM,EAAE,EAAE;YACtC,IAAI,CAAC;gBACD,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YACjE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACpC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,YAAY;QACZ,EAAE,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,GAAG,EAAE;;YACvC,IAAI,EAAE,EAAE,CAAC;gBACL,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;gBAC5B,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;gBACxB,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YAC7B,CAAC;YACD,MAAA,OAAO,CAAC,gBAAgB,uDAAI,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,WAAW;QACX,IAAI,EAAE,CAAC,EAAE,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YACjC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAe,EAAE,EAAE;gBAClD,IAAI,CAAC;oBACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBAChC,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;wBAC9B,OAAO,CAAC,aAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACrC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,sBAAsB;gBAC1B,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;QAED,WAAW;QACX,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE;gBAChC,OAAO,CAAC,SAAU,EAAE,CAAC;YACzB,CAAC,CAAC,CAAC;QACP,CAAC;QAED,OAAO,EAAE,CAAC;IACd,CAAC;CACJ"}
@@ -2,7 +2,7 @@
2
2
  * 巡检操作方法
3
3
  */
4
4
  import { Action } from "./Action";
5
- export type RoutingActionType = 'start' | 'stop' | 'pause' | 'restart';
5
+ export type RoutingActionType = 'start' | 'stop' | 'pause' | 'restart' | 'updateMoveParam';
6
6
  export type RoutingType = 'videoPatrol';
7
7
  export interface RoutingParam {
8
8
  type: RoutingType;
@@ -12,6 +12,12 @@ export interface RoutingParam {
12
12
  isRolerMoveOnRouting?: boolean;
13
13
  isViewFollow?: boolean;
14
14
  }
15
+ export interface RoutingMoveParam {
16
+ speed?: number;
17
+ isPauseAtRouting?: boolean;
18
+ isRolerMoveOnRouting?: boolean;
19
+ isViewFollow?: boolean;
20
+ }
15
21
  export declare class RoutingAction extends Action {
16
22
  /**
17
23
  * 开始路由巡视
@@ -33,5 +39,11 @@ export declare class RoutingAction extends Action {
33
39
  * 从暂停点继续开始巡视
34
40
  */
35
41
  static restart(): Promise<any>;
42
+ /**
43
+ * 更新移动参数
44
+ * 巡视过程中动态更新移动相关参数
45
+ * @param param 移动参数
46
+ */
47
+ static updateMoveParam(param: RoutingMoveParam): Promise<any>;
36
48
  }
37
49
  //# sourceMappingURL=Routing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Routing.d.ts","sourceRoot":"","sources":["../../src/modules/Routing.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAa,MAAM,UAAU,CAAC;AAG7C,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;AAGtE,MAAM,MAAM,WAAW,GAAG,aAAa,CAAA;AAGvC,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAeD,qBAAa,aAAc,SAAQ,MAAM;IACrC;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY;IAyChC;;;OAGG;IACH,MAAM,CAAC,IAAI;IAcX;;OAEG;IACH,MAAM,CAAC,KAAK;IAcZ;;;OAGG;IACH,MAAM,CAAC,OAAO;CAajB"}
1
+ {"version":3,"file":"Routing.d.ts","sourceRoot":"","sources":["../../src/modules/Routing.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAa,MAAM,UAAU,CAAC;AAG7C,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,iBAAiB,CAAA;AAG1F,MAAM,MAAM,WAAW,GAAG,aAAa,CAAA;AAGvC,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAGD,MAAM,WAAW,gBAAgB;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAeD,qBAAa,aAAc,SAAQ,MAAM;IACrC;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY;IAyChC;;;OAGG;IACH,MAAM,CAAC,IAAI;IAcX;;OAEG;IACH,MAAM,CAAC,KAAK;IAcZ;;;OAGG;IACH,MAAM,CAAC,OAAO;IAcd;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,gBAAgB;CAoCjD"}
@@ -78,5 +78,37 @@ export class RoutingAction extends Action {
78
78
  };
79
79
  return this.sendParam(sendParam, '重新开始路由巡视');
80
80
  }
81
+ /**
82
+ * 更新移动参数
83
+ * 巡视过程中动态更新移动相关参数
84
+ * @param param 移动参数
85
+ */
86
+ static updateMoveParam(param) {
87
+ // 如果 isViewFollow 为 true,则 isRolerMoveOnRouting 应该为 false
88
+ if (param.isViewFollow === true && param.isRolerMoveOnRouting === true) {
89
+ console.warn('当 isViewFollow 为 true 时,isRolerMoveOnRouting 应该为 false');
90
+ }
91
+ const data = {
92
+ action: 'updateMoveParam'
93
+ };
94
+ // 可选参数
95
+ if (param.speed !== undefined) {
96
+ data.speed = param.speed;
97
+ }
98
+ if (param.isPauseAtRouting !== undefined) {
99
+ data.isPauseAtRouting = param.isPauseAtRouting;
100
+ }
101
+ if (param.isRolerMoveOnRouting !== undefined) {
102
+ data.isRolerMoveOnRouting = param.isRolerMoveOnRouting;
103
+ }
104
+ if (param.isViewFollow !== undefined) {
105
+ data.isViewFollow = param.isViewFollow;
106
+ }
107
+ const sendParam = {
108
+ cmd: "routing",
109
+ data
110
+ };
111
+ return this.sendParam(sendParam, '更新移动参数');
112
+ }
81
113
  }
82
114
  //# sourceMappingURL=Routing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Routing.js","sourceRoot":"","sources":["../../src/modules/Routing.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAa,MAAM,UAAU,CAAC;AA+B7C,MAAM,OAAO,aAAc,SAAQ,MAAM;IACrC;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,KAAmB;QAC5B,0DAA0D;QAC1D,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,KAAK,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,IAAI,GAQN;YACA,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,EAAE,EAAE,KAAK,CAAC,EAAE;SACf,CAAC;QAEF,OAAO;QACP,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC7B,CAAC;QACD,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;QACnD,CAAC;QACD,IAAI,KAAK,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;YAC3C,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,oBAAoB,CAAC;QAC3D,CAAC;QACD,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QAC3C,CAAC;QAED,MAAM,SAAS,GAAqB;YAChC,GAAG,EAAE,SAAS;YACd,IAAI;SACP,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,IAAI;QACP,MAAM,IAAI,GAEN;YACA,MAAM,EAAE,MAAM;SACjB,CAAC;QAEF,MAAM,SAAS,GAAqB;YAChC,GAAG,EAAE,SAAS;YACd,IAAI;SACP,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK;QACR,MAAM,IAAI,GAEN;YACA,MAAM,EAAE,OAAO;SAClB,CAAC;QAEF,MAAM,SAAS,GAAqB;YAChC,GAAG,EAAE,SAAS;YACd,IAAI;SACP,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,OAAO;QACV,MAAM,IAAI,GAEN;YACA,MAAM,EAAE,SAAS;SACpB,CAAC;QAEF,MAAM,SAAS,GAAqB;YAChC,GAAG,EAAE,SAAS;YACd,IAAI;SACP,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACjD,CAAC;CACJ"}
1
+ {"version":3,"file":"Routing.js","sourceRoot":"","sources":["../../src/modules/Routing.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.7",
3
+ "version": "2.3.0",
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 三维消息对象,无分包时 data JSON 对象;有分包时 data 为字符串片段
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: object, onMessage?: (data: any) => void) {
73
+ const msg = raw 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);
@@ -4,7 +4,7 @@
4
4
  import { Action, SendParam } from "./Action";
5
5
 
6
6
  // 路由巡视动作类型
7
- export type RoutingActionType = 'start' | 'stop' | 'pause' | 'restart'
7
+ export type RoutingActionType = 'start' | 'stop' | 'pause' | 'restart' | 'updateMoveParam'
8
8
 
9
9
  // 路由巡视类型
10
10
  export type RoutingType = 'videoPatrol'
@@ -19,6 +19,14 @@ export interface RoutingParam {
19
19
  isViewFollow?: boolean; // 巡检途中视角是否跟随路径线,默认 false。true时,isRolerMoveOnRouting 应为 false
20
20
  }
21
21
 
22
+ // 更新移动参数
23
+ export interface RoutingMoveParam {
24
+ speed?: number; // 移动速度,越小越慢
25
+ isPauseAtRouting?: boolean; // 巡检途中遇到摄像头弹框时是否停下来,默认 false
26
+ isRolerMoveOnRouting?: boolean; // 巡检途中是否有人在路径上行走,默认 false
27
+ isViewFollow?: boolean; // 巡检途中视角是否跟随路径线,默认 false。true时,isRolerMoveOnRouting 应为 false
28
+ }
29
+
22
30
  type RoutingParamType = SendParam & {
23
31
  cmd: "routing";
24
32
  data: {
@@ -131,4 +139,46 @@ export class RoutingAction extends Action {
131
139
  };
132
140
  return this.sendParam(sendParam, '重新开始路由巡视');
133
141
  }
142
+
143
+ /**
144
+ * 更新移动参数
145
+ * 巡视过程中动态更新移动相关参数
146
+ * @param param 移动参数
147
+ */
148
+ static updateMoveParam(param: RoutingMoveParam) {
149
+ // 如果 isViewFollow 为 true,则 isRolerMoveOnRouting 应该为 false
150
+ if (param.isViewFollow === true && param.isRolerMoveOnRouting === true) {
151
+ console.warn('当 isViewFollow 为 true 时,isRolerMoveOnRouting 应该为 false');
152
+ }
153
+
154
+ const data: {
155
+ action: 'updateMoveParam';
156
+ speed?: number;
157
+ isPauseAtRouting?: boolean;
158
+ isRolerMoveOnRouting?: boolean;
159
+ isViewFollow?: boolean;
160
+ } = {
161
+ action: 'updateMoveParam'
162
+ };
163
+
164
+ // 可选参数
165
+ if (param.speed !== undefined) {
166
+ data.speed = param.speed;
167
+ }
168
+ if (param.isPauseAtRouting !== undefined) {
169
+ data.isPauseAtRouting = param.isPauseAtRouting;
170
+ }
171
+ if (param.isRolerMoveOnRouting !== undefined) {
172
+ data.isRolerMoveOnRouting = param.isRolerMoveOnRouting;
173
+ }
174
+ if (param.isViewFollow !== undefined) {
175
+ data.isViewFollow = param.isViewFollow;
176
+ }
177
+
178
+ const sendParam: RoutingParamType = {
179
+ cmd: "routing",
180
+ data
181
+ };
182
+ return this.sendParam(sendParam, '更新移动参数');
183
+ }
134
184
  }