im-rtc-call-engine 1.0.0 → 2.1.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.
Files changed (144) hide show
  1. package/dist/browserSignals.d.ts +27 -0
  2. package/dist/browserSignals.d.ts.map +1 -0
  3. package/dist/browserSignals.js +34 -0
  4. package/dist/browserSignals.js.map +1 -0
  5. package/dist/callGuards.d.ts +35 -0
  6. package/dist/callGuards.d.ts.map +1 -0
  7. package/dist/callGuards.js +66 -0
  8. package/dist/callGuards.js.map +1 -0
  9. package/dist/callHistory.d.ts +50 -0
  10. package/dist/callHistory.d.ts.map +1 -0
  11. package/dist/callHistory.js +100 -0
  12. package/dist/callHistory.js.map +1 -0
  13. package/dist/callOptions.d.ts +14 -0
  14. package/dist/callOptions.d.ts.map +1 -1
  15. package/dist/callOptions.js +21 -0
  16. package/dist/callOptions.js.map +1 -1
  17. package/dist/debugToken.d.ts +29 -0
  18. package/dist/debugToken.d.ts.map +1 -0
  19. package/dist/debugToken.js +73 -0
  20. package/dist/debugToken.js.map +1 -0
  21. package/dist/engine.d.ts +88 -60
  22. package/dist/engine.d.ts.map +1 -1
  23. package/dist/engine.js +141 -178
  24. package/dist/engine.js.map +1 -1
  25. package/dist/engineBus.d.ts.map +1 -1
  26. package/dist/engineBus.js +1 -0
  27. package/dist/engineBus.js.map +1 -1
  28. package/dist/engineSession.d.ts +49 -0
  29. package/dist/engineSession.d.ts.map +1 -0
  30. package/dist/engineSession.js +97 -0
  31. package/dist/engineSession.js.map +1 -0
  32. package/dist/events.d.ts +48 -0
  33. package/dist/events.d.ts.map +1 -1
  34. package/dist/events.js +2 -0
  35. package/dist/events.js.map +1 -1
  36. package/dist/frameLoop.d.ts +48 -5
  37. package/dist/frameLoop.d.ts.map +1 -1
  38. package/dist/frameLoop.js +205 -29
  39. package/dist/frameLoop.js.map +1 -1
  40. package/dist/index.d.ts +6 -3
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +3 -2
  43. package/dist/index.js.map +1 -1
  44. package/dist/media/captureStream.d.ts +9 -0
  45. package/dist/media/captureStream.d.ts.map +1 -0
  46. package/dist/media/captureStream.js +20 -0
  47. package/dist/media/captureStream.js.map +1 -0
  48. package/dist/media/engineMediaApi.d.ts +24 -3
  49. package/dist/media/engineMediaApi.d.ts.map +1 -1
  50. package/dist/media/engineMediaApi.js +63 -27
  51. package/dist/media/engineMediaApi.js.map +1 -1
  52. package/dist/media/mediaBridge.d.ts +6 -1
  53. package/dist/media/mediaBridge.d.ts.map +1 -1
  54. package/dist/media/mediaBridge.js +18 -1
  55. package/dist/media/mediaBridge.js.map +1 -1
  56. package/dist/media/remoteAudio.d.ts +65 -0
  57. package/dist/media/remoteAudio.d.ts.map +1 -0
  58. package/dist/media/remoteAudio.js +83 -0
  59. package/dist/media/remoteAudio.js.map +1 -0
  60. package/dist/media/videoSender.d.ts +21 -0
  61. package/dist/media/videoSender.d.ts.map +1 -0
  62. package/dist/media/videoSender.js +74 -0
  63. package/dist/media/videoSender.js.map +1 -0
  64. package/dist/media/viewRegistry.d.ts +11 -3
  65. package/dist/media/viewRegistry.d.ts.map +1 -1
  66. package/dist/media/viewRegistry.js +35 -5
  67. package/dist/media/viewRegistry.js.map +1 -1
  68. package/dist/media/webrtcAdapter.d.ts +0 -31
  69. package/dist/media/webrtcAdapter.d.ts.map +1 -1
  70. package/dist/media/webrtcAdapter.js +10 -88
  71. package/dist/media/webrtcAdapter.js.map +1 -1
  72. package/dist/signaling/connection.d.ts +36 -0
  73. package/dist/signaling/connection.d.ts.map +1 -1
  74. package/dist/signaling/connection.js +89 -2
  75. package/dist/signaling/connection.js.map +1 -1
  76. package/dist/signaling/enums.d.ts +15 -0
  77. package/dist/signaling/enums.d.ts.map +1 -1
  78. package/dist/signaling/enums.js +17 -0
  79. package/dist/signaling/enums.js.map +1 -1
  80. package/dist/signaling/envelope.d.ts +13 -1
  81. package/dist/signaling/envelope.d.ts.map +1 -1
  82. package/dist/signaling/envelope.js +15 -3
  83. package/dist/signaling/envelope.js.map +1 -1
  84. package/dist/signaling/frames.call.d.ts +14 -0
  85. package/dist/signaling/frames.call.d.ts.map +1 -1
  86. package/dist/signaling/frames.call.js +8 -0
  87. package/dist/signaling/frames.call.js.map +1 -1
  88. package/dist/signaling/frames.room.d.ts +6 -4
  89. package/dist/signaling/frames.room.d.ts.map +1 -1
  90. package/dist/signaling/frames.room.js +10 -4
  91. package/dist/signaling/frames.room.js.map +1 -1
  92. package/dist/signaling/frames.sys.d.ts +5 -1
  93. package/dist/signaling/frames.sys.d.ts.map +1 -1
  94. package/dist/signaling/frames.sys.js +5 -1
  95. package/dist/signaling/frames.sys.js.map +1 -1
  96. package/dist/signaling/heartbeat.js +1 -1
  97. package/dist/signaling/heartbeat.js.map +1 -1
  98. package/dist/signaling/networkProbe.d.ts +31 -0
  99. package/dist/signaling/networkProbe.d.ts.map +1 -0
  100. package/dist/signaling/networkProbe.js +47 -0
  101. package/dist/signaling/networkProbe.js.map +1 -0
  102. package/dist/signaling/oneShotTimer.d.ts +30 -0
  103. package/dist/signaling/oneShotTimer.d.ts.map +1 -0
  104. package/dist/signaling/oneShotTimer.js +44 -0
  105. package/dist/signaling/oneShotTimer.js.map +1 -0
  106. package/dist/signaling/reconnector.d.ts +17 -1
  107. package/dist/signaling/reconnector.d.ts.map +1 -1
  108. package/dist/signaling/reconnector.js +48 -14
  109. package/dist/signaling/reconnector.js.map +1 -1
  110. package/dist/signaling/resumeDeadline.d.ts +1 -1
  111. package/dist/signaling/resumeDeadline.d.ts.map +1 -1
  112. package/dist/signaling/resumeDeadline.js +7 -10
  113. package/dist/signaling/resumeDeadline.js.map +1 -1
  114. package/dist/state/callMachine.d.ts +7 -0
  115. package/dist/state/callMachine.d.ts.map +1 -1
  116. package/dist/state/callMachine.js +16 -7
  117. package/dist/state/callMachine.js.map +1 -1
  118. package/dist/state/callRecv.d.ts.map +1 -1
  119. package/dist/state/callRecv.js +9 -1
  120. package/dist/state/callRecv.js.map +1 -1
  121. package/dist/state/engineMachine.d.ts.map +1 -1
  122. package/dist/state/engineMachine.js +26 -6
  123. package/dist/state/engineMachine.js.map +1 -1
  124. package/dist/state/roomMachine.d.ts +10 -2
  125. package/dist/state/roomMachine.d.ts.map +1 -1
  126. package/dist/state/roomMachine.js +87 -15
  127. package/dist/state/roomMachine.js.map +1 -1
  128. package/dist/state/roomPaging.d.ts +81 -0
  129. package/dist/state/roomPaging.d.ts.map +1 -0
  130. package/dist/state/roomPaging.js +202 -0
  131. package/dist/state/roomPaging.js.map +1 -0
  132. package/dist/state/roomRecv.d.ts.map +1 -1
  133. package/dist/state/roomRecv.js +17 -7
  134. package/dist/state/roomRecv.js.map +1 -1
  135. package/dist/state/types.d.ts +12 -0
  136. package/dist/state/types.d.ts.map +1 -1
  137. package/dist/state/types.js.map +1 -1
  138. package/dist/state/unsubscribeTimers.d.ts +29 -0
  139. package/dist/state/unsubscribeTimers.d.ts.map +1 -0
  140. package/dist/state/unsubscribeTimers.js +55 -0
  141. package/dist/state/unsubscribeTimers.js.map +1 -0
  142. package/dist/version.d.ts +1 -1
  143. package/dist/version.js +1 -1
  144. package/package.json +1 -1
package/dist/frameLoop.js CHANGED
@@ -1,4 +1,4 @@
1
- import { ErrorCode, RtcError } from './errors.js';
1
+ import { ErrorCode, RtcError, isRtcError } from './errors.js';
2
2
  import { LogField, logger } from './logger.js';
3
3
  import { addRemoteCandidate } from './media/mediaPlane.js';
4
4
  import { CallEndReason } from './reasons.js';
@@ -6,6 +6,7 @@ import { toFrameProps } from './signaling/caseMapping.js';
6
6
  import { lookupFrame } from './signaling/registry.js';
7
7
  import { initialEngineContext, reduceEngine } from './state/engineMachine.js';
8
8
  import { forceEnd as planForceEnd } from './state/forceEnd.js';
9
+ import { UnsubscribeTimers } from './state/unsubscribeTimers.js';
9
10
  /**
10
11
  * engine 的**核心循环**:输入喂进状态机 → 产出的帧发出去 → 应答再喂回来。
11
12
  *
@@ -24,10 +25,31 @@ const LEAVE_CALLBACKS = new Set(['onCallEnd', 'onRoomLeft', 'onRoomClosed']);
24
25
  const LATE_MEDIA_FRAMES = new Set(['room.ice_candidate', 'room.offer', 'room.answer']);
25
26
  /** SLOW_REQUEST_MS:请求往返超过这么久记一条。正常是几十毫秒。 */
26
27
  const SLOW_REQUEST_MS = 2_000;
28
+ /**
29
+ * UNANSWERED_CODES 是「这一问没能送到 / 没等到回话」的那几个码——**不是服务端的答复**。
30
+ *
31
+ * 与它们相对的是服务端真回了一个 `sys.error`(1xxx):那才叫被拒,重试救不回来。
32
+ * 这三个都只说明本端与服务端此刻不通,而连接回来之后同一问多半就成了,
33
+ * 所以 `room.publish` 走 `publish_deferred` 挂起等重连,而不是把整通电话收掉
34
+ * (见 `rollback`)。四端同一张表(iOS 的 `IMFrameLoop+Rollback.unansweredCodes`)。
35
+ */
36
+ const UNANSWERED_CODES = new Set([
37
+ ErrorCode.networkUnreachable,
38
+ ErrorCode.signalingTimeout,
39
+ ErrorCode.notLoggedIn,
40
+ ]);
27
41
  /** FrameLoop 持有状态机快照,并驱动它。 */
28
42
  export class FrameLoop {
29
43
  deps;
30
44
  ctx = initialEngineContext;
45
+ /** 会议房翻页退订的五秒迟滞(`state/roomPaging.ts`)。到点喂一个内部事件回状态机。 */
46
+ unsubscribeTimers = new UnsubscribeTimers((trackId) => {
47
+ void this.dispatch({
48
+ kind: 'internal',
49
+ name: 'unsubscribe_hysteresis_elapsed',
50
+ args: { track_id: trackId },
51
+ });
52
+ });
31
53
  constructor(deps) {
32
54
  this.deps = deps;
33
55
  }
@@ -38,6 +60,7 @@ export class FrameLoop {
38
60
  /** reset 把状态机归零(logout 用)。 */
39
61
  reset() {
40
62
  this.ctx = initialEngineContext;
63
+ this.unsubscribeTimers.clear();
41
64
  }
42
65
  /**
43
66
  * handleIncoming 是**所有下行帧的唯一入口**——事件与应答都走它。
@@ -72,9 +95,31 @@ export class FrameLoop {
72
95
  }
73
96
  await this.dispatch({ kind: 'recv', type, data });
74
97
  }
75
- /** dispatch 把一个输入喂进状态机,然后发帧、抛事件。 */
98
+ /**
99
+ * dispatch 把一个**找不到调用方**的输入喂进状态机(下行帧、内部事件、engine 自己发起的动作),
100
+ * 然后抛事件、发帧。**永不 reject**:帧失败转成 `error` 事件。
101
+ */
76
102
  async dispatch(input) {
77
- await this.apply(reduceEngine(this.ctx, input), input);
103
+ await this.apply(reduceEngine(this.ctx, input), input, null);
104
+ }
105
+ /**
106
+ * request 把一次**宿主调用**喂进状态机,并把结果交回调用方(ACTION_RESULT_DESIGN R1)。
107
+ *
108
+ * - 状态机就地拒绝 → reject 那个码(`2005` 等),不抛事件、不发帧;
109
+ * - 本步直接产出的帧被拒 / 超时 / 没连接 → reject 那个错误,**不再**发 `error` 事件(R3),
110
+ * 回滚照做——`onCallEnd(error)` 之类的状态事件照发(R4);
111
+ * - 否则 resolve 最后一帧的应答 data(`call` 从里面取 `call_id`)。本步没发帧(意图被缓存、
112
+ * 拨出中挂起的 cancel)时 resolve 空对象:调用已受理,之后的连锁帧失败走 `error` 事件(R2)。
113
+ */
114
+ async request(input) {
115
+ const result = reduceEngine(this.ctx, input);
116
+ const settlement = { error: null, reply: {} };
117
+ await this.apply(result, input, settlement);
118
+ if (result.reject !== undefined)
119
+ throw new RtcError(result.reject.code);
120
+ if (settlement.error !== null)
121
+ throw settlement.error;
122
+ return settlement.reply;
78
123
  }
79
124
  /**
80
125
  * forceEnd 强制收掉当前这一场:**先把结束帧直接交给信令连接,再在本地收场**(`CallEngine.forceEnd`)。
@@ -107,7 +152,18 @@ export class FrameLoop {
107
152
  });
108
153
  this.fireFrames(plan.send);
109
154
  // 结束帧已经直发过了,这里只落状态与事件;apply 的同步前半段(记状态、关媒体、抛事件)当场跑完。
110
- this.apply({ state: plan.state, send: [], emit: plan.emit }).catch((err) => this.deps.bus.emitError(err));
155
+ this.apply({ state: plan.state, send: [], emit: plan.emit }, undefined, null).catch((err) => this.deps.bus.emitError(err));
156
+ }
157
+ /** endLocally 按此刻状态本地收场(通话或会议),不发帧。已经收干净时什么都不做。 */
158
+ endLocally() {
159
+ const plan = planForceEnd(this.ctx, Date.now());
160
+ if (plan.emit.length === 0)
161
+ return;
162
+ logger.warn('结束帧失败,本地收场', {
163
+ [LogField.callId]: this.ctx.call.callId,
164
+ [LogField.roomId]: this.ctx.room.roomId,
165
+ });
166
+ this.apply({ state: plan.state, send: [], emit: plan.emit }, undefined, null).catch((err) => this.deps.bus.emitError(err));
111
167
  }
112
168
  /** fireFrames 把结束帧直接交给信令连接,不等应答。 */
113
169
  fireFrames(frames) {
@@ -128,11 +184,14 @@ export class FrameLoop {
128
184
  *
129
185
  * **发帧之前的部分都是同步的**——`forceEnd` 靠这一点在调用返回前就把事件抛完。
130
186
  */
131
- async apply(result, input) {
187
+ async apply(result, input, settlement) {
132
188
  const { bus, bridge } = this.deps;
189
+ const endingCall = this.ctx.call;
133
190
  this.ctx = result.state;
134
191
  // 认领新到的远端轨道,**并把状态机里已经没有的那些摘掉**(见 syncRemoteTracks)。
135
192
  bridge.syncRemoteTracks(this.ctx.room.remoteTracks);
193
+ // 翻页退订的定时器**每轮对账一次**,不在各条来路上各排各撤(见 UnsubscribeTimers)。
194
+ this.unsubscribeTimers.sync(this.ctx.room.pendingUnsubscribe);
136
195
  // **一通结束就把媒体面归零**,在抛事件之前:宿主收到 onCallEnd 时
137
196
  // engine 已经是干净的,下一通不会带着上一通的轨道去协商。
138
197
  if (result.emit.some((event) => LEAVE_CALLBACKS.has(event.cb)))
@@ -148,7 +207,7 @@ export class FrameLoop {
148
207
  就先收到了这通电话房间里的事件。
149
208
  */
150
209
  if (input !== undefined)
151
- this.logLocalReject(input, result.emit);
210
+ this.logLocalReject(input, result);
152
211
  for (const event of result.emit) {
153
212
  /*
154
213
  **`onDisconnected` 由连接层独占**,状态机那一份不往外发。
@@ -174,6 +233,12 @@ export class FrameLoop {
174
233
  if (event.cb === 'onKickedOut')
175
234
  continue;
176
235
  bus.emitMachine(event);
236
+ // 紧跟 onCallEnd、每通有上下文的电话恰好一次(通话记录设计 §4)。
237
+ if (event.cb === 'onCallEnd') {
238
+ const summary = callSummaryEvent(endingCall, event, this.deps.selfUid?.() ?? '');
239
+ if (summary !== null)
240
+ bus.emitMachine(summary);
241
+ }
177
242
  }
178
243
  /*
179
244
  有人开了摄像头:等他的**新画面真的上屏**再抛一次 firstVideoFrame(见 `FirstFrameGate`)。
@@ -183,11 +248,16 @@ export class FrameLoop {
183
248
  bridge.awaitFirstVideoFrame(uid, (trackId) => bus.emit('firstVideoFrame', { uid, trackId }));
184
249
  }
185
250
  for (const frame of result.send) {
186
- await this.sendFrame(frame);
251
+ await this.sendFrame(frame, settlement);
187
252
  }
188
253
  }
189
- /** sendFrame 发一帧,并把应答喂回状态机。 */
190
- async sendFrame(frame) {
254
+ /**
255
+ * sendFrame 发一帧,并把应答喂回状态机。
256
+ *
257
+ * `settlement` 不为 null 时这一帧是宿主调用直接发出的:失败记进去交给调用方,不发 `error` 事件。
258
+ * 同一次调用发了几帧的,调用方拿第一个失败,其余的照旧走 `error` 事件——一个错误只报一次。
259
+ */
260
+ async sendFrame(frame, settlement) {
191
261
  const connection = this.deps.connection();
192
262
  /*
193
263
  **没有连接不是「什么都不做」,是一次失败。**
@@ -202,24 +272,49 @@ export class FrameLoop {
202
272
  */
203
273
  if (connection === null) {
204
274
  const err = new RtcError(ErrorCode.notLoggedIn, { forType: frame.type });
205
- this.deps.bus.emitError(err);
206
- await this.rollback(frame);
275
+ this.settleFailure(err, settlement);
276
+ await this.rollback(frame, err);
207
277
  return;
208
278
  }
209
279
  const startedMs = Date.now();
280
+ let reply;
210
281
  try {
211
- const reply = await this.deps.sender.send(connection, frame.type, frame.data);
212
- noteSlowRequest(frame.type, startedMs, false);
213
- // **应答也要喂回状态机**:join.ok / publish.ok 都是状态推进的关键一步。
214
- if (reply !== null)
215
- await this.handleIncoming(reply.type, reply.data);
282
+ reply = await this.deps.sender.send(connection, frame.type, frame.data);
216
283
  }
217
284
  catch (err) {
218
285
  noteSlowRequest(frame.type, startedMs, true);
219
- // 请求失败不该中断整个事件流:转成 error 事件交给宿主。
220
- this.deps.bus.emitError(err);
221
- await this.rollback(frame);
286
+ // 请求失败不该中断整个事件流:交给调用方,找不到调用方就转成 error 事件。
287
+ const wrapped = withForType(err, frame.type);
288
+ this.settleFailure(wrapped, settlement);
289
+ await this.rollback(frame, wrapped);
290
+ return;
291
+ }
292
+ noteSlowRequest(frame.type, startedMs, false);
293
+ if (reply === null)
294
+ return;
295
+ // **应答也要喂回状态机**:join.ok / publish.ok 都是状态推进的关键一步。
296
+ if (settlement === null) {
297
+ await this.handleIncoming(reply.type, reply.data);
298
+ return;
222
299
  }
300
+ settlement.reply = reply.data;
301
+ /*
302
+ 宿主调用直接发出的那一帧:**应答落进状态机就算结算完**,不等它连锁出来的帧(R2 / D1)。
303
+
304
+ `.ok` 在 `handleIncoming` 里没有 await 就进了 `apply`,状态与事件在这一行同步落地;
305
+ 之后的连锁帧(publish.ok → pub offer → 等 answer,join.ok → 重放缓存的发布)有自己的出口
306
+ (`dispatch` → error 事件)。等它们的话,`publishMicrophone()` 要陪着 SDP 协商走完,
307
+ 协商卡住还得多等一个请求超时——而那些失败本来就不算这次调用的。
308
+ */
309
+ this.handleIncoming(reply.type, reply.data).catch((err) => this.deps.bus.emitError(err));
310
+ }
311
+ /** settleFailure 把一帧的失败交给调用方;没有调用方、或调用方已经拿到一个失败时发 error 事件。 */
312
+ settleFailure(err, settlement) {
313
+ if (settlement !== null && settlement.error === null) {
314
+ settlement.error = err;
315
+ return;
316
+ }
317
+ this.deps.bus.emitError(err);
223
318
  }
224
319
  /**
225
320
  * rollback 把「这一帧没送到」翻译成状态机能收场的内部事件。
@@ -228,8 +323,11 @@ export class FrameLoop {
228
323
  * 而之后每一个动作都被不变量本地拒成 2005,宿主只看到一串没头没尾的 2005,
229
324
  * 真正的原因早淹在上一条 error 里了。四端同一张表(Android 的
230
325
  * `IMCallEngine.onRequestFailed`、iOS 的 `IMFrameLoop.sendFrame`)。
326
+ *
327
+ * `error` 是这一帧失败的真实原因,只有 `room.publish` 那一支要看它——
328
+ * 分清「服务端真回了拒绝」与「没等到应答」(见下面 `UNANSWERED_CODES`)。
231
329
  */
232
- async rollback(frame) {
330
+ async rollback(frame, error) {
233
331
  const { type } = frame;
234
332
  /*
235
333
  呼叫 / 接听 / 主动加入被拒都要退回 idle。
@@ -243,6 +341,16 @@ export class FrameLoop {
243
341
  await this.dispatch({ kind: 'internal', name: 'call_failed' });
244
342
  return;
245
343
  }
344
+ /*
345
+ **退出类被拒也要本地收场**(ACTION_RESULT_DESIGN D2):用户按的是「结束」,服务端拒了
346
+ (最常见的是通话已经结束 1402 / 1401)或根本没发出去,都不该让界面停在通话里。
347
+ 结束帧已经试过了,这里只落本地——与 `forceEnd` 同一份收场计算,只是不再发帧。
348
+ `room.leave` 被拒走下面那条 `leave_failed`。
349
+ */
350
+ if (type === 'call.hangup' || type === 'call.reject' || type === 'call.cancel') {
351
+ this.endLocally();
352
+ return;
353
+ }
246
354
  /*
247
355
  **进房失败要把房间状态退回 idle**。
248
356
 
@@ -264,6 +372,13 @@ export class FrameLoop {
264
372
  */
265
373
  if (type === 'room.leave') {
266
374
  await this.dispatch({ kind: 'internal', name: 'leave_failed' });
375
+ /*
376
+ 等应答期间断线的话,房间机先收到 `disconnected` 从 `leaving` 进了 `reconnecting`,
377
+ `leave_failed` 就不认了——恢复之后人又回到房里,而宿主早就按了离开。
378
+ 这一帧只可能是宿主要离房才发的,没有通话时照样本地收场(D2)。
379
+ */
380
+ if (this.ctx.call.state === 'idle')
381
+ this.endLocally();
267
382
  return;
268
383
  }
269
384
  /*
@@ -272,10 +387,32 @@ export class FrameLoop {
272
387
  原先这张表不认 `room.publish`,那条轨道永远停在 `publishing`:publish.ok 不来 →
273
388
  pub offer 永不产出 → 上行从未协商。界面显示已接通、计时器在走、按钮显示没静音,
274
389
  **对方全程听不见看不见,零提示**。留在通话里只报错也不够——Kit 并不展示这类错误,
275
- 而服务端会拒的几种情形(房间已不在、同一路重复发布、请求超时)重试都救不回来。
390
+ 而服务端会拒的几种情形(房间已不在、同一路重复发布)重试都救不回来。
276
391
  收场走 forceEnd:挂断帧不排队、callEnd 只抛一次,各端 Kit 本来就认它。
392
+
393
+ **但「没等到应答」不算被拒(2026-09-18 改)。** 原先这段把请求超时也算进
394
+ 「重试救不回来」里,真机打了脸:18:18:39 `room.publish` 超时、整通被收成
395
+ `reason=error`,而**9 秒后连接就回来了、会话也在恢复窗口内 resume 成功**
396
+ (服务端 18:18:48「在恢复窗口内重连,取消离房」)。本来能接着打的一通被
397
+ 我们自己判了死刑;更糟的是那时挂断帧也发不出去,服务端与对端完全不知道,
398
+ 对面对着一个幽灵坐了 3 分钟才手动挂断。超时不是服务端的答复,只说明
399
+ 「这一问没送到」,挂起来等重连即可(见 `roomMachine.ts` 的 `deferPublish`)。
400
+ 真连不回来的话 `resumeDeadline.ts` 那条给它上限的倒计时照样会把通话收场
401
+ (走 `session_unrecoverable`),不需要这里抢在它前面下手。
402
+
403
+ **会议房同理**(没有通话、只在房里):原先这一支只对通话开放,会议房的超时
404
+ 落到 `publish_failed`,这一路被悄悄摘掉、不重试、不通知宿主——信令抖一下
405
+ 用户就静音或黑屏。恢复窗口的倒计时是连接层的,不分通话与会议。
277
406
  */
278
407
  if (type === 'room.publish') {
408
+ if (UNANSWERED_CODES.has(error.code)) {
409
+ logger.warn('发布没等到应答,挂起等重连', {
410
+ [LogField.callId]: this.ctx.call.callId,
411
+ code: error.code,
412
+ });
413
+ await this.dispatch({ kind: 'internal', name: 'publish_deferred', args: frame.data });
414
+ return;
415
+ }
279
416
  if (this.ctx.call.state !== 'idle') {
280
417
  logger.warn('发布被拒,结束本端通话', { [LogField.callId]: this.ctx.call.callId });
281
418
  this.forceEnd(Date.now(), CallEndReason.error);
@@ -296,18 +433,15 @@ export class FrameLoop {
296
433
  /**
297
434
  * logLocalReject 把「状态机本地拒掉了一个动作」记成一条**说得清的**日志。
298
435
  *
299
- * 宿主收到的 `onError` 只有 `code=2005 / invalid_state`——**哪个动作、当时什么状态,
436
+ * 宿主拿到的错误只有 `code=2005 / invalid_state`——**哪个动作、当时什么状态,
300
437
  * 一个字都没有**。三人会议那次排查就卡在这里:日志里十几条一模一样的 2005,
301
438
  * 要读代码才能推出「点的是挂断、而会议里没有 call」。
302
439
  *
303
- * 不把这些塞进 `onError` 的载荷,是因为那是四端共用的公开回调表;
304
- * 诊断信息进日志就够了。
440
+ * 不把这些塞进错误对象,是因为那是四端共用的公开形状;诊断信息进日志就够了。
441
+ * engine 自己发起的动作(`restart_pub_ice`)被拒时**只有**这一条日志。
305
442
  */
306
- logLocalReject(input, emit) {
307
- if (input.kind !== 'act')
308
- return;
309
- const rejected = emit.some((event) => event.cb === 'onError' && event.args['code'] === ErrorCode.invalidState);
310
- if (!rejected)
443
+ logLocalReject(input, result) {
444
+ if (input.kind !== 'act' || result.reject === undefined)
311
445
  return;
312
446
  logger.warn('动作被状态机本地拒绝', {
313
447
  op: input.op,
@@ -316,6 +450,18 @@ export class FrameLoop {
316
450
  });
317
451
  }
318
452
  }
453
+ /**
454
+ * withForType 把发送层抛出来的东西收敛成带请求类型的 `RtcError`。
455
+ *
456
+ * 断线时在途请求一起被 reject 的那个错误(`networkUnreachable`)不知道自己是哪一帧的,这里补上——
457
+ * 调用方与 `error` 事件的 `forType` 都靠它。
458
+ */
459
+ function withForType(err, type) {
460
+ if (isRtcError(err) && err.forType !== '')
461
+ return err;
462
+ const code = isRtcError(err) ? err.code : ErrorCode.internal;
463
+ return new RtcError(code, { forType: type, cause: err });
464
+ }
319
465
  /**
320
466
  * noteSlowRequest 记下「这一帧从交给 sender 到拿回应答」慢得不正常的那几次。
321
467
  *
@@ -343,4 +489,34 @@ export function videoTurnedOn(emit) {
343
489
  }
344
490
  return uids;
345
491
  }
492
+ /**
493
+ * callSummaryEvent 用结束前的通话上下文 + onCallEnd 的载荷拼 `onCallSummary`。
494
+ *
495
+ * 结束前没有通话,或这通电话还没拿到 call_id(本地就地拒掉 / 发不出去的 `call()`)返回 null:
496
+ * 服务端没有这通电话,宿主也没有 cid 可写进记录。
497
+ */
498
+ export function callSummaryEvent(call, end, selfUid) {
499
+ if (call.state === 'idle')
500
+ return null;
501
+ const endedId = end.args['call_id'];
502
+ const callId = typeof endedId === 'string' && endedId !== '' ? endedId : call.callId;
503
+ if (callId === '')
504
+ return null;
505
+ return {
506
+ cb: 'onCallSummary',
507
+ args: {
508
+ call_id: callId,
509
+ reason: end.args['reason'],
510
+ duration_sec: end.args['duration_sec'],
511
+ ended_by: end.args['ended_by'],
512
+ media_type: call.mediaType,
513
+ is_group: call.isGroup,
514
+ chat_group_id: call.chatGroupId,
515
+ caller: call.callerUid !== '' ? call.callerUid : call.role === 'caller' ? selfUid : '',
516
+ role: call.role,
517
+ peer: call.peerUid,
518
+ user_data: call.userData,
519
+ },
520
+ };
521
+ }
346
522
  //# sourceMappingURL=frameLoop.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"frameLoop.js","sourceRoot":"","sources":["../src/frameLoop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frameLoop.js","sourceRoot":"","sources":["../src/frameLoop.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -11,6 +11,9 @@
11
11
  * 状态机、WS 客户端、媒体适配器随后落地。
12
12
  */
13
13
  export { SDK_VERSION } from './version.js';
14
+ export { generateDebugToken } from './debugToken.js';
15
+ export type { DebugTokenParams } from './debugToken.js';
16
+ export type { CallHistoryMember, CallHistoryPage, CallHistoryRecord, FetchCallHistoryOptions, } from './callHistory.js';
14
17
  export { ERROR_DEFINITIONS, ErrorCode, RtcError, errorName, isLocalError, isRetryable, isRtcError, lookupError, } from './errors.js';
15
18
  export type { ErrorCodeName, ErrorCodeValue, ErrorDefinition } from './errors.js';
16
19
  /** 宿主可以自己先验一遍生成的 id,不必等到 login() / joinRoom() 才发现(协议 §2.5)。 */
@@ -19,11 +22,11 @@ export { CallEndReason, GROUP_DOMINANT_PRIORITY, callDurationSec, dominantReason
19
22
  export type { CallEndReasonValue } from './reasons.js';
20
23
  export { LogField, clearDiagnostics, exportDiagnostics, logger, redact, redactCandidate, redactSdp, setLogClock, setLogLevel, setLogSink, } from './logger.js';
21
24
  export type { DiagnosticEntry, LogFields, LogLevel, LogSink } from './logger.js';
22
- export { MAX_FRAME_BYTES, OK_SUFFIX, decodeEnvelope, encodeEnvelope, isEvent, okType, } from './signaling/envelope.js';
25
+ export { MAX_FRAME_BYTES, MAX_RECV_FRAME_BYTES, OK_SUFFIX, decodeEnvelope, encodeEnvelope, isEvent, okType, } from './signaling/envelope.js';
23
26
  export type { Envelope } from './signaling/envelope.js';
24
27
  export { checkDiscipline } from './signaling/discipline.js';
25
- export { DEFAULT_TIMEOUT_SEC, LAYERS, MAX_TIMEOUT_SEC, MEDIA_TYPES, MIN_TIMEOUT_SEC, PC_ROLES, REASONS, ROOM_KINDS, TRACK_KINDS, TRACK_SOURCES, } from './signaling/enums.js';
26
- export type { HandledAction, Layer, MediaType, PcRole, RoomKind, TrackKind, TrackSource, } from './signaling/enums.js';
28
+ export { AUTO_SUBSCRIBE_MODES, DEFAULT_TIMEOUT_SEC, LAYERS, MAX_TIMEOUT_SEC, MEDIA_TYPES, MIN_TIMEOUT_SEC, PC_ROLES, REASONS, ROOM_KINDS, TRACK_KINDS, TRACK_SOURCES, } from './signaling/enums.js';
29
+ export type { AutoSubscribeMode, HandledAction, Layer, MediaType, PcRole, RoomKind, TrackKind, TrackSource, } from './signaling/enums.js';
27
30
  export { FrameType, REQUEST_TYPES, RESERVED_TYPES, decodeFrame, encodeFrame, isRequestType, isReservedType, knownFrameTypes, lookupFrame, newFrameData, } from './signaling/registry.js';
28
31
  export type { FieldSpec, FrameData, FrameFields } from './signaling/fieldSpec.js';
29
32
  export { BACKOFF_STEPS_MS, backoffDelayMs } from './signaling/backoff.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -11,14 +11,15 @@
11
11
  * 状态机、WS 客户端、媒体适配器随后落地。
12
12
  */
13
13
  export { SDK_VERSION } from './version.js';
14
+ export { generateDebugToken } from './debugToken.js';
14
15
  export { ERROR_DEFINITIONS, ErrorCode, RtcError, errorName, isLocalError, isRetryable, isRtcError, lookupError, } from './errors.js';
15
16
  /** 宿主可以自己先验一遍生成的 id,不必等到 login() / joinRoom() 才发现(协议 §2.5)。 */
16
17
  export { checkDeviceId, checkRoomId } from './protocolId.js';
17
18
  export { CallEndReason, GROUP_DOMINANT_PRIORITY, callDurationSec, dominantReason, normalizeReason, } from './reasons.js';
18
19
  export { LogField, clearDiagnostics, exportDiagnostics, logger, redact, redactCandidate, redactSdp, setLogClock, setLogLevel, setLogSink, } from './logger.js';
19
- export { MAX_FRAME_BYTES, OK_SUFFIX, decodeEnvelope, encodeEnvelope, isEvent, okType, } from './signaling/envelope.js';
20
+ export { MAX_FRAME_BYTES, MAX_RECV_FRAME_BYTES, OK_SUFFIX, decodeEnvelope, encodeEnvelope, isEvent, okType, } from './signaling/envelope.js';
20
21
  export { checkDiscipline } from './signaling/discipline.js';
21
- export { DEFAULT_TIMEOUT_SEC, LAYERS, MAX_TIMEOUT_SEC, MEDIA_TYPES, MIN_TIMEOUT_SEC, PC_ROLES, REASONS, ROOM_KINDS, TRACK_KINDS, TRACK_SOURCES, } from './signaling/enums.js';
22
+ export { AUTO_SUBSCRIBE_MODES, DEFAULT_TIMEOUT_SEC, LAYERS, MAX_TIMEOUT_SEC, MEDIA_TYPES, MIN_TIMEOUT_SEC, PC_ROLES, REASONS, ROOM_KINDS, TRACK_KINDS, TRACK_SOURCES, } from './signaling/enums.js';
22
23
  export { FrameType, REQUEST_TYPES, RESERVED_TYPES, decodeFrame, encodeFrame, isRequestType, isReservedType, knownFrameTypes, lookupFrame, newFrameData, } from './signaling/registry.js';
23
24
  export { BACKOFF_STEPS_MS, backoffDelayMs } from './signaling/backoff.js';
24
25
  export { CloseCode, shouldReconnect } from './signaling/webSocket.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,WAAW,EACX,UAAU,EACV,WAAW,GACZ,MAAM,aAAa,CAAC;AAGrB,+DAA+D;AAC/D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,eAAe,GAChB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,EACjB,MAAM,EACN,MAAM,EACN,eAAe,EACf,SAAS,EACT,WAAW,EACX,WAAW,EACX,UAAU,GACX,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,eAAe,EACf,SAAS,EACT,cAAc,EACd,cAAc,EACd,OAAO,EACP,MAAM,GACP,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EACL,mBAAmB,EACnB,MAAM,EACN,eAAe,EACf,WAAW,EACX,eAAe,EACf,QAAQ,EACR,OAAO,EACP,UAAU,EACV,WAAW,EACX,aAAa,GACd,MAAM,sBAAsB,CAAC;AAW9B,OAAO,EACL,SAAS,EACT,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,aAAa,EACb,cAAc,EACd,eAAe,EACf,WAAW,EACX,YAAY,GACb,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAGvD,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9F,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpF,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAI9E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE/F,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AASpE,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAUrD,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,WAAW,EACX,UAAU,EACV,WAAW,GACZ,MAAM,aAAa,CAAC;AAGrB,+DAA+D;AAC/D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,eAAe,GAChB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,EACjB,MAAM,EACN,MAAM,EACN,eAAe,EACf,SAAS,EACT,WAAW,EACX,WAAW,EACX,UAAU,GACX,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,SAAS,EACT,cAAc,EACd,cAAc,EACd,OAAO,EACP,MAAM,GACP,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,MAAM,EACN,eAAe,EACf,WAAW,EACX,eAAe,EACf,QAAQ,EACR,OAAO,EACP,UAAU,EACV,WAAW,EACX,aAAa,GACd,MAAM,sBAAsB,CAAC;AAY9B,OAAO,EACL,SAAS,EACT,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,aAAa,EACb,cAAc,EACd,eAAe,EACf,WAAW,EACX,YAAY,GACb,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAGvD,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9F,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpF,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAI9E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE/F,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AASpE,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { MediaSource } from './mediaAdapter.js';
2
+ /**
3
+ * captureStream 向 `MediaSource` 取流,并把浏览器的异常收敛成结构化错误:
4
+ * 权限类(`NotAllowedError` / `SecurityError`)→ `2001`,其余一律当「没设备」→ `2002`。
5
+ *
6
+ * 界面怎么表现由 uikit 决定,**这里不弹 alert**(CONVENTIONS §8),只抛错。
7
+ */
8
+ export declare function captureStream(source: MediaSource, constraints: MediaStreamConstraints): Promise<MediaStream>;
9
+ //# sourceMappingURL=captureStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captureStream.d.ts","sourceRoot":"","sources":["../../src/media/captureStream.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,sBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC,CAOlH"}
@@ -0,0 +1,20 @@
1
+ import { ErrorCode, RtcError } from '../errors.js';
2
+ /**
3
+ * captureStream 向 `MediaSource` 取流,并把浏览器的异常收敛成结构化错误:
4
+ * 权限类(`NotAllowedError` / `SecurityError`)→ `2001`,其余一律当「没设备」→ `2002`。
5
+ *
6
+ * 界面怎么表现由 uikit 决定,**这里不弹 alert**(CONVENTIONS §8),只抛错。
7
+ */
8
+ export async function captureStream(source, constraints) {
9
+ try {
10
+ return await source.getStream(constraints);
11
+ }
12
+ catch (cause) {
13
+ const code = isPermissionError(cause) ? ErrorCode.devicePermissionDenied : ErrorCode.deviceNotFound;
14
+ throw new RtcError(code, { cause });
15
+ }
16
+ }
17
+ function isPermissionError(cause) {
18
+ return cause instanceof Error && (cause.name === 'NotAllowedError' || cause.name === 'SecurityError');
19
+ }
20
+ //# sourceMappingURL=captureStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captureStream.js","sourceRoot":"","sources":["../../src/media/captureStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGnD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAmB,EAAE,WAAmC;IAC1F,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC;QACpG,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,KAAK,YAAY,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,iBAAiB,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC;AACxG,CAAC"}
@@ -2,6 +2,7 @@ import type { EngineBus } from '../engineBus.js';
2
2
  import type { FrameLoop } from '../frameLoop.js';
3
3
  import type { Layer } from '../signaling/enums.js';
4
4
  import type { MediaAdapter } from './mediaAdapter.js';
5
+ import type { MediaBridge } from './mediaBridge.js';
5
6
  /**
6
7
  * 门面那几个媒体方法的**方法体**。
7
8
  *
@@ -15,10 +16,15 @@ export interface MediaApiDeps {
15
16
  media: MediaAdapter;
16
17
  loop: FrameLoop;
17
18
  bus: EngineBus;
19
+ /** 本端轨道换了(关摄像头停采集 / 重新采集)之后,预览挂载要跟上。 */
20
+ bridge: MediaBridge;
18
21
  }
19
- /** 探麦克风。失败**也走一遍 error 事件**再抛——宿主的契约见 CallEngine.probeMicrophone。 */
22
+ /**
23
+ * 探麦克风。失败**只** reject,不再同时发 error 事件(2.0.0 起一次失败只从一个出口报,
24
+ * server `docs/design/ACTION_RESULT_DESIGN.md` R3)。宿主的契约见 CallEngine.probeMicrophone。
25
+ */
20
26
  export declare function probeMicrophone(d: MediaApiDeps): Promise<void>;
21
- /** 探摄像头。与 probeMicrophone 同一个契约:失败先报 error 事件再抛。 */
27
+ /** 探摄像头。与 probeMicrophone 同一个契约。 */
22
28
  export declare function probeCamera(d: MediaApiDeps): Promise<void>;
23
29
  /**
24
30
  * 发布麦克风。顺序是**先拿轨道再拿 cid**:浏览器不允许自定义 track.id,
@@ -35,6 +41,21 @@ export declare function publishCamera(d: MediaApiDeps, simulcast: boolean): Prom
35
41
  * 关的时候本端也先停:帧要等 `room.mute.ok`,不能让指示灯多亮这一个来回。
36
42
  */
37
43
  export declare function setMuted(d: MediaApiDeps, cid: string, muted: boolean): Promise<void>;
38
- /** 报某人画面的层上界。一个 uid 可能有多条视频轨道,逐条报。 */
44
+ /** LocalSource 是按类型开关的那两路本端轨道。 */
45
+ export type LocalSource = 'microphone' | 'camera';
46
+ /** 按类型开:没发布过就发布(摄像头有预览时复用),发布过就取消静音——**不会重复发布**。 */
47
+ export declare function openLocal(d: MediaApiDeps, source: LocalSource): Promise<void>;
48
+ /**
49
+ * 按类型关:已发布的那条 `setMuted(cid, true)`,**不 unpublish**;没发布过是空操作。
50
+ *
51
+ * 清理类,**永不 reject**:本端在发帧之前就已经静音,`room.mute` 被拒也不回滚本端(隐私优先),
52
+ * 错误走 error 事件。
53
+ */
54
+ export declare function closeLocal(d: MediaApiDeps, source: LocalSource): Promise<void>;
55
+ /**
56
+ * 报某人画面的层上界。一个 uid 可能有多条视频轨道,逐条报。
57
+ *
58
+ * 提示类,**永不 reject**(界面每次换布局都调,失败宿主也无事可做):失败走 error 事件。
59
+ */
39
60
  export declare function setRemoteLayer(d: MediaApiDeps, uid: string, layer: Layer): Promise<void>;
40
61
  //# sourceMappingURL=engineMediaApi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"engineMediaApi.d.ts","sourceRoot":"","sources":["../../src/media/engineMediaApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;;;;;GAOG;AAEH,mCAAmC;AACnC,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,GAAG,EAAE,SAAS,CAAC;CAChB;AAED,qEAAqE;AACrE,wBAAsB,eAAe,CAAC,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAQpE;AAED,oDAAoD;AACpD,wBAAsB,WAAW,CAAC,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAOhE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAQxE;AAED,4DAA4D;AAC5D,wBAAsB,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAQxF;AAED;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAK1F;AAED,sCAAsC;AACtC,wBAAsB,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAS9F"}
1
+ {"version":3,"file":"engineMediaApi.d.ts","sourceRoot":"","sources":["../../src/media/engineMediaApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;;;;;GAOG;AAEH,mCAAmC;AACnC,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,GAAG,EAAE,SAAS,CAAC;IACf,wCAAwC;IACxC,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpE;AAED,oCAAoC;AACpC,wBAAsB,WAAW,CAAC,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAQxE;AAED,4DAA4D;AAC5D,wBAAsB,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAQxF;AAED;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAO1F;AAED,kCAAkC;AAClC,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,QAAQ,CAAC;AAUlD,oDAAoD;AACpD,wBAAsB,SAAS,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAQnF;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAQpF;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAa9F"}