离开直播房间(VideoRoom leave)

验证状态:已源码核验、未联调;Web 发送与中心转发已双侧核验;Janus 服务器行为源码不在本工作区。 适用基线:源码归纳 @ 2026-09-14

用途与场景

组件卸载时以 leave 请求退出 VideoRoom 房间,是 live-view Janus 家族唯一的收尾命令。Web 不发送 destroy,会话由 Janus 服务端超时回收。公共口径见 会话正本

使用位置

页面/功能 角色或空间分支
SFU 直播组件卸载时发布 leave(切换设备/关窗/页面离开) 登录用户;SFU 分支组件卸载

对应 inventory operationId:mqtt-leavefn-server-center-server-iot-v1-forward-janus-to-0253fcaf

端点

MQTT 发布 server/center-server/iot/v1/forward/janus/to(回包按 transaction 首段 reply topic 回流)— leave 请求,退出 VideoRoom 房间。

通道契约全量事实见 MQTT 主题清单 · 静态 topic动态下行;字段级契约见 yaml 详解 · forward-janus-to;janus 转发链业务语义见设备业务 · mqtt-bridge 设备消息链。请求报文 {janus:"message", body:{request:"leave"}, handle_id, transaction, session_id},transaction suffix 为 leave;Web 未消费 leave 应答/事件。

动线与完成判据

  • 发布完成 = publishAsync 成功;无应答等待,无失败重试。
  • 资源收尾顺序(已核验):leave 发布 → 停麦克风/远端轨道 → PeerConnection.close() → 清空队列;keepalive 因组件卸载停止,会话由服务端超时回收(时长缺证)。

错误与边界

  • 离开与销毁是两件事:Web 只 leave 房间,不 destroy 会话/句柄;设备侧房间与发布流的收尾属设备契约(缺证)。
  • 卸载时若 MQTT 已断开,leave 发布失败且无补偿——残留房间成员关系由 Janus 会话超时回收(超时行为缺证)。
  • 中心转发边界同 会话正本;leave 无回执即无失败感知。

调用关系与资源清理

已知缺口

  1. Janus 对 leave 的应答、设备发布流停止语义、会话/房间残留回收时长源码不在本工作区。
  2. MQTT 断开瞬间的卸载路径无 leave 补偿;影响范围未联调核验。