挂载 VideoRoom 插件(attach)

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

用途与场景

在已创建的 Janus 会话上挂载 VideoRoom 插件句柄(handle),是直播订阅 join 的前置步骤。通道、transaction、中心转发与回包路由的公共口径见 会话正本,本页只列差异。

使用位置

页面/功能 角色或空间分支
SFU 直播组件 create 成功回调内发布 attach 登录用户;SFU 分支

对应 inventory operationId:mqtt-januscreateresultfn-server-center-server-iot-v1-forward-janus-to-6680c2be

端点

MQTT 发布 server/center-server/iot/v1/forward/janus/to(回包按 transaction 首段 reply topic 回流)— attach 请求,在已建会话上挂载 VideoRoom 插件句柄。

通道契约全量事实见 MQTT 主题清单 · 静态 topic动态下行;字段级契约见 yaml 详解 · forward-janus-to;janus 转发链业务语义见设备业务 · mqtt-bridge 设备消息链。请求报文 {janus:"attach", plugin:"janus.plugin.videoroom", opaque_id, transaction, session_id},transaction suffix 为 attachopaque_id 形如 "{deviceNo},{room},{feed},{YYYYMMDDHHmmssSSS}",随 Janus 事件回显、可用于日志关联。

动线与完成判据

  • 成功 = 回包 topic 收到 janus==="success"data.id 可用,该 ID 即后续 join 的 handle_id
  • 无请求级超时;15 秒无 SDP 整体重试兜底。

错误与边界

  • 插件未加载/未授权的 Janus 失败形态属 Janus 实现(缺证);Web 只区分 success 与其他。
  • 中心丢弃无回执(同 会话正本)。

调用关系与资源清理

  • 时序:createattachjoin
  • handle 随会话终止;Web 不单独 detach(卸载仅 leave 房间)。

已知缺口

Janus 服务器 attach 行为(重复挂载、插件缺失形态)源码不在本工作区;未联调。