验证状态:已源码核验、未联调;适用基线:源码归纳 @ 2026-09-14
在加入房间后,把浏览器麦克风 offer 作为 JSEP 随 configure 请求发送,换取 Janus 的 answer,完成 WebRTC 音频链路协商。本页是 mqtt-janus-audiobridge-configure 的唯一操作正本。这是对讲媒体就绪的最后一步;configure 成功仍不等价于"能听到声音",还需 answer 应用与 ICE 连通完成。
| 页面/功能 | 角色或空间分支 |
|---|---|
对讲房间连接状态机在 startWebrtc 内发布 configure(jsep=browserAudioSession.offer) |
登录用户;已 joined |
MQTT 发布 server/center-server/ptt/v1/forward/janus/to(回包按 transaction 首段 reply topic 回流)— 以 JSEP offer 换 answer,完成 WebRTC 音频协商(janus 动词 configure)。
通道契约全量事实(直通白名单、消费方、转发与回包路由)见 MQTT 主题清单 · 静态 topic与动态下行(物理桥与 transaction 回包路由);字段级契约见 yaml 详解 · ptt forward-janus-to;janus 转发链的业务语义见设备业务 · mqtt-bridge 设备消息链。
请求报文 {janus:"message", session_id, handle_id, body:{request:"configure"}, jsep:{type:"offer", sdp}}——浏览器 offer 以 JSEP 随请求携带。
| 层级 | 判据 |
|---|---|
| 协商成功 | configure 收到 event + jsep.answer 并成功 setRemoteDescription(applyRemoteAnswer,失败报 Start WebRTC failed) |
| 阶段超时 | webrtc 阶段 8 秒 deadline(WebRTC setup timed out);joined 与 ICE 回包谁后到谁触发 startWebrtc,均未完成时由该 deadline 兜底 |
| ICE 连通 | 由 RTCPeerConnection 状态驱动;webrtcConnected 置位后房间 UI 才认为可讲(state.webrtcConnected) |
| 断连容忍 | WebRTC 断开有 5 秒宽限(WEBRTC_DISCONNECTED_GRACE_MS);稳定连接 30 秒内断开重置恢复预算(STABLE_CONNECTION_RESET_MS) |
event 但 jsep 非 answer → 不结算,继续等待直至超时。failConnection("Start WebRTC failed"),走恢复状态机。browser-audio-session 管理;连接更替时旧会话经 abort/deferred cleanup 释放。request 的现场说明)源码不在本工作区;未联调。