验证状态:存在关键缺口,不可作为完整契约发布。Web 发布、应答消费与轮询状态机已源码核验;设备固件是
device/{deviceNo}/webrtc/v1的最终消费者,其源码不在本工作区,pong/media应答的权威字段、错误形态与未知输入行为缺证。 适用基线:源码归纳 @ 2026-09-14
直播播放器(Player1)在挂载播放组件前,用同一设备 topic 上的三个命令探测设备 WebRTC 状态机与媒体配置:ping 换取设备直播状态快照(pong),media 读取当前媒体配置,media 携 params 修改音量等媒体项。三者决定播放器走 P2P 还是 SFU(Janus)分支,以及是否显示"被占用/等待建房"等状态。本页是这三个操作的唯一操作正本;同 topic 的 P2P 信令族见 P2P 信令,Janus 直播的 play/idr 控制见 Janus 直播设备媒体控制。
| 页面/功能 | 角色或空间分支 |
|---|---|
播放器发布 sub:"ping" 探测 |
登录用户;单直播/多直播/播放页中挂载播放器 |
播放器发布 sub:"media"(无 params) |
同上 |
播放器发布 sub:"media" 携 params(由 uiEvent.device.setMedia 触发) |
同上 |
对应 inventory operationId:mqtt-player1-device-var-webrtc-v1-01377122(ping)、mqtt-player1-device-var-webrtc-v1-b91d8cc4(media 读取)、mqtt-player1-device-var-webrtc-v1-be2f79bc(media 修改)。
MQTT 发布 device/{deviceNo}/webrtc/v1(Web → Broker → 设备直发,中心网关不消费;QoS/retain 等 wire 细节见业务页)— ping(直播状态快照)与 media(媒体配置读/写)命令。
设备直连 webrtc 通道属中心不消费的接入面(网关默认订阅清单无 device/+/webrtc/#,见服务端订阅面);通道业务语义见设备业务 · mqtt-bridge 设备消息链。载荷形态 {sub, id, reply[, params]};media 修改时 params 为媒体配置对象(Web 触发源如 {audio:{speaker}},权威字段集属设备契约),应答回流到 …/components/player-1/{deviceNo}/webrtc。
| 层级 | 判据 |
|---|---|
| 发布完成 | publishAsync Promise 成功;仅代表 Broker 受理,不代表设备收到或执行 |
| 状态确认 | reply topic 收到 sub:"pong" 应答,data.status 可解析 |
| 媒体确认 | sub:"media" 应答写入 deviceMediaMap |
| 超时 | 无内置请求超时;以轮询间隔补偿——pong 为空时 1 秒一问;pong.status="p2p" 被占用 500ms、SFU 未建房 1 秒、SFU 已建房 5 秒;media 在 P2P 未取到时 1 秒、SFU 未取到时 90 秒 |
pong.status="p2p" 且 id 非空且非本会话 → 判"被其他端占用";id 为空 → 过渡态,页面以 500ms 激进 ping 推动恢复。设备按 pong 结果分派:idle 或本会话 P2P → P2P 信令;sfu → Janus 直播会话(room/feed/session_id/handle_id 来自 pong)。
waitFor/Promise 链静默丢弃,依赖轮询与 MQTT 自动重连(clean session)补偿。pong 时播放器停留在"等待设备响应 pong"文案,无失败终态。pong 是瞬时快照,传输不推出状态新鲜。USER_CFG_S.KeyLockEnable/AdminPasswd 比对)是前端控件限制,不是设备或后端硬约束。ping 与 media 读取在 deviceWebrtcReplyType/deviceNo 变化时各触发一次;三个函数均 useThrottleFn({wait:500})。retryConnection 仅清空 pong/pingTime 触发重探,由 Janus/P2P 组件在连接失败 15 秒后回调。ping/media 的设备侧处理、pong/media 应答权威 schema、status/room/feed/session_id/handle_id 的真实类型与语义,均以设备固件或协议文档为准,本工作区缺证。device/# 发布、user/.../# 订阅)与部署环境订阅清单一致性待部署核验。