验证状态:已源码核验、未联调;Web 发送、中心转发与回包路由已双侧核验;Janus 服务器行为源码不在本工作区。 适用基线:源码归纳 @ 2026-09-14
SFU(Janus)直播的第一步:Web 向中心 Janus 转发通道发送 create 建立 Janus 会话,随后每 3 秒 keepalive 保活。本页是这两个操作的唯一操作正本,也是 live-view Janus 家族(attach / join / start / trickle / leave / handle_info)的公共口径正本——家族各页只列差异。中心对 Normal/Admin 通道的转发边界总口径见Janus 信令边界。
| 页面/功能 | 角色或空间分支 |
|---|---|
| SFU 直播组件挂载即发 create;会话/句柄建立后周期 keepalive | 登录用户;播放器分派到 SFU 分支(pong.room>0) |
| 同组件 | 同上;会话已建立 |
对应 inventory operationId:mqtt-januscreatefn-server-center-server-iot-v1-forward-janus-to-3d4f75c6(create)、mqtt-webrtclivejanus1-server-center-server-iot-v1-forward-janus-to-9b02ac8f(keepalive)。
MQTT 发布 server/center-server/iot/v1/forward/janus/to(回包按 transaction 首段 reply topic 回流;Admin 变体 …/forward/janus/admin/to 仅 handle_info 使用)— create / keepalive 两个 Janus 直播会话生命周期请求,中心原文转发到物理 Janus。
通道契约全量事实(直通白名单、消费方、转发与回包路由)见 MQTT 主题清单 · 静态 topic与动态下行(物理 server/{janusNo}/to 与 transaction 回包路由);字段级契约见 yaml 详解 · forward-janus-to;janus 转发链的业务语义见设备业务 · mqtt-bridge 设备消息链。
外层 wire 载荷为 {janusNo, transaction, ...janus 报文}(与对讲域同构但 transaction 拼形不同);transaction 形如 {replyTopic},{deviceNo},{action},{YYYYMMDDHHmmssSSS}(action ∈ create、attach、message-join、trickle、keepalive、leave、handle-info),reply topic 为 user/{username}/web/{sessionId}/components/webrtc-live-janus-1/{deviceNo}/webrtc,routeId(第 2 段 deviceNo)供中心解析目标 Janus 节点(解析策略属中心内部,旧设备形 transaction 的回包落点为 device/{deviceNo}/webrtc/janus-from,见 yaml 详解)。两请求报文:create {janus:"create"}、keepalive {janus:"keepalive", session_id}(Web 不解析 keepalive 应答,仅靠周期维持)。QoS/retain 等 wire 细节见业务页。
janus==="success" 且 data.id 可用;非 success 的 janus 值仅记入状态文案。retryConnection与连接失败 15 秒重试兜底,重试通过播放器重探 pong 重建整链。useInterval 随生命周期停止);Web 不发送 destroy,会话由 Janus 服务端超时回收——超时时长属 Janus 实现(缺证)。janusNo 解析为空——均无 Web 回执,只能等 15 秒重试。data.id 缺失或非 success 时 Web 停留在状态文案,不自动重发 create(重试由上层重探驱动)。create/keepalive 的核心行为、会话超时、error 应答形态与错误码全集源码不在本工作区;本页只记录 Web 成功判据与中心转发边界,不宣称媒体可用。janusNo 配置值属部署数据,未核验;多 Janus 节点路由(非 janus-1)未联调。