下发 ICE 服务器到设备(webrtc deliver)

验证状态:存在关键缺口,不可作为完整契约发布。Web 发布链已源码核验;设备是最终消费者,其源码不在本工作区,接收行为与是否需要应答缺证。 适用基线:源码归纳 @ 2026-09-14

用途与场景

把中心为设备分配的 WebRTC ICE 服务器列表推送给 WebRTC 在线的设备,是直播/对讲建立前中心的单向供给动作。本页是 device/{deviceNo}/webrtc/deliver/v1 的唯一操作正本。ICE 列表本身如何生成属于共享域正本(useDataAcquisitionDeviceStore.getIceServers),本页只描述投递命令。

使用位置

页面/功能 角色或空间分支
共享 Hook(被设备状态/ICE 列表变化触发) 登录用户;对 statusListwebrtcOnlineStatus 为真的每台设备逐台下发

对应 inventory operationId:mqtt-deliver-device-var-webrtc-deliver-v1-86f35d53

端点

MQTT 发布 device/{deviceNo}/webrtc/deliver/v1(Web → Broker → 设备直发,中心网关不消费;QoS/retain 等 wire 细节见业务页)— 把中心为设备分配的 WebRTC ICE 服务器列表推送给设备(无应答单向)。

设备直连 webrtc 通道的清单口径见MQTT 主题清单 · 服务端订阅面(网关默认订阅清单无 device/+/+/webrtc/#,该 topic 不在中心消费/发布点清单内);通道业务语义见设备业务 · mqtt-bridge 设备消息链

载荷形态 {id, data:{ice:[]}}——没有 sub/reply 成员;ice 元素结构由 ICE 列表生成逻辑决定,Web 以未知数组透传。

动线与完成判据

层级 判据
发布完成 publishAsync Promise 成功;失败仅写日志
设备接收/执行 不可观测:无应答机制,无重试(发送内容经 iceSentSet 去重,同一内容不会重发)
业务效果 只能通过后续直播/对讲是否可用间接判断,链路属实时监看正本

错误与边界

  • 发布失败只记日志;无重试、无死信。ICE 列表变化会再次触发投递,但内容相同的消息被去重跳过。
  • 逐设备串行(队列并发 1)避免同一 MQTT client 瞬时并发;页面卸载清空队列与去重集合。
  • MQTT 族公共边界见MQTT 连接与消息边界

调用关系与资源清理

  • 触发时机:deviceStatusListiceServerList 变化后 100ms 节流。
  • 消费方为设备 WebRTC 栈;直播/对讲建立链路见实时监看域正本(发布后由 13 号票正本衔接)。

已知缺口

  1. 设备固件(最终消费者)源码不在本工作区:设备是否订阅该 topic、ice 元素的权威结构、接收后的行为均缺证。
  2. data.ice 的元素字段以 unknown[] 透传,Web 源码只能证明"数组且非空",不能证明元素契约。
  3. Broker ACL 与部署环境订阅清单一致性待部署核验。