发送 ICE 候选(AudioBridge trickle)

验证状态:已源码核验、未联调;适用基线:源码归纳 @ 2026-09-14

用途与场景

把本端收集的 ICE 候选单向推给 Janus(fire-and-forget)。本页是 mqtt-janus-audiobridge-trickle 的唯一操作正本。通道、transaction、中心转发公共口径见 会话生命周期正本;远端候选下发属 events 正本

使用位置

页面/功能 角色或空间分支
对讲房间连接链路的候选合批发送(120ms 首批 / 30ms 跟随批窗口) 登录用户;会话与句柄已就绪

端点

MQTT 发布 server/center-server/ptt/v1/forward/janus/to(回包按 transaction 首段 reply topic 回流)— 把本端 ICE 候选单向推给 Janus(janus 动词 trickle,fire-and-forget)。

通道契约全量事实(直通白名单、消费方、转发与回包路由)见 MQTT 主题清单 · 静态 topic动态下行(物理桥与 transaction 回包路由);字段级契约见 yaml 详解 · ptt forward-janus-to;janus 转发链的业务语义见设备业务 · mqtt-bridge 设备消息链

请求报文 {janus:"trickle", session_id, handle_id, candidates:<数组>}(fire-and-forget,仍携带 transaction 供路由)。

动线与完成判据

  • 完成 = publishAsync Promise 成功(传输层);失败随连接状态机进入恢复。
  • 无应用层超时;发布经 outputQueue 排队并受 8 秒发布 deadline 约束(JANUS_PUBLISH_DEADLINE_MS)。
  • 候选发送顺序与合批窗口(120ms/30ms)已核验;不影响语义,只影响时延。

错误与边界

  • 未连接/发布失败:reject 由调用方捕获(发送侧)。
  • 候选先于 configure 到达 Janus 的行为由 Janus 决定,缺证;Web 顺序为先 configure 后 trickle(startWebrtc 流程)。
  • 等候选错误无定向应答:只能通过会话级错误事件或媒体失败间接发现。

调用关系与资源清理

  • 时序:configure 后双向候选交换;远端候选见 events 正本
  • 无服务端状态需要清理;连接更替时在途候选随任务作废。

已知缺口

Janus 对 trickle 的受理与错误回执形态源码不在本工作区;{completed:true} 收尾语义未核验。未联调。