验证状态:已源码核验、未联调;Web 与中心消费者双侧核验。 适用基线:源码归纳 @ 2026-09-14
直播页(单直播/多直播/回放共享的 WebRTC 链路)批量获取每台设备 WebRTC 客户端的 ICE(STUN/TURN)服务器配置,写入 iceServerList 供 P2P 与 Janus 两条直播链路建立 RTCPeerConnection 使用。本页是实时监看域 operationId 的唯一操作正本,覆盖直播链路的请求/轮询/消费差异;topic 的 wire 应答契约(iceServers 结构与按请求方设备号解析)与对讲链路共用,正本见 对讲 list-ice-server。
| 页面/功能 | 角色或空间分支 |
|---|---|
| 单直播页设备前缀查询 | 登录用户;单直播页 |
| 多直播页设备前缀查询 | 登录用户;多直播页 |
| 回放页设备前缀查询(同参数构造) | 登录用户;回放页 |
消费:getIceServers(prefix) → P2P/Janus 组件与 ICE 下发共享 Hook |
— |
对应 inventory operationId:mqtt-list-ice-server-server-center-server-iot-v1-list-ice-server-3bbd408b。
MQTT 请求 server/center-server/iot/v1/list-ice-server(应答按一次性 reply topic 回流)— 直播页批量获取每台设备 WebRTC 客户端的 ICE(STUN/TURN)服务器配置。
主题契约全量事实(方向、消费方、payload 归档口径)见 MQTT 主题清单 · 静态 topic与yaml 详解 · list-ice-server;该通道的业务语义(iot v1 信封、按请求方设备号解析)见设备业务 · mqtt-bridge 设备消息链。载荷形态 {id, reply, params:{mqttClientIdPrefixes}}——不带 replyNumberMax/replyInterval,即服务端默认单次应答;wire 应答契约(iceServers 结构)与对讲链路完全一致,见对讲正本的记录。
刷新语义:无固定轮询——isIdle 恒真使 backoff 停摆(单直播 poll:{busyInterval:3000, isIdle:=>true}),设备列表变化时重查;无本地持久缓存(与对讲链路的 localStorage 缓存不同)。
| 层级 | 判据 |
|---|---|
| 发布完成 | publishAsync Promise 成功 |
| 应答到达 | 应答 topic 收到 status=200 且 data 数组可解析;iceServers 结构校验属对讲链路 zod 逻辑,直播链路不校验、直接存表 |
| 超时 | 请求无内置超时;设备列表变化或页面重进触发重查 |
params 缺失/非数组/空)与技术失败形态见对讲正本·错误与边界。iceServers 内容:异常回包会原样进入 store,组件侧表现为 iceServers 为空/畸形——RTCPeerConnection 构造行为由浏览器决定(Web 未做防御)。iceServers 权威 schema 已在对讲正本核验,但实际部署配置值未核验。