查询直播订阅人数(Admin handle_info)

验证状态:已源码核验、未联调;Web 发送/消费与中心 Admin 转发(含凭据覆盖)已双侧核验;Janus Admin API 响应字段缺证。 适用基线:源码归纳 @ 2026-09-14

用途与场景

SFU 直播运行期间,Web 周期查询设备发布者句柄的插件信息,取其 subscribers 作为当前观看人数展示。这是 live-view 唯一走 Admin 通道的操作。公共口径见 会话正本;中心对 Admin 通道的转发边界另见Janus 信令边界

使用位置

页面/功能 角色或空间分支
SFU 直播组件周期查询句柄信息(与 keepalive 同周期,每 3 秒执行) 登录用户;提供了 publisher_session_id/publisher_handle_id(来自设备 pong
同组件消费应答 同上

对应 inventory operationId:mqtt-webrtclivejanus1-server-center-server-iot-v1-forward-janus-admin-to-07b80803

端点

MQTT 发布 server/center-server/iot/v1/forward/janus/admin/to(回包按 transaction 首段 reply topic 回流)— handle_info Admin API 请求,查询设备发布者句柄的订阅人数。

通道契约全量事实见 MQTT 主题清单 · 静态 topic动态下行(物理 server/{janusNo}/admin/to;字段级契约见 yaml 详解 · forward-janus-admin-to;janus 转发链业务语义见设备业务 · mqtt-bridge 设备消息链。请求报文 {janus:"handle_info", plugin_only:true, admin_secret, handle_id:<publisher_handle_id>, transaction, session_id:<publisher_session_id>},transaction suffix 为 handle-info。注意查询目标是设备的 Janus 会话/句柄(来自 pong),不是 Web 自己的。

动线与完成判据

  • 发布完成 = publishAsync 成功;查询结果以回包 topic 收到可解析 subscribers 为准。
  • 无请求级超时;失败仅表现为订阅人数停留旧值/0。周期 3 秒,与 keepalive 共用 useInterval
  • publisher_session_idpublisher_handle_id 均 ≥1 才发送,否则跳过本次查询。

错误与边界

  • 中心丢弃无回执:JSON 非法、reply 自地址、服务端 secret 未配置或目标节点为空。
  • admin_secret 由中心以服务端配置覆盖后注入物理转发——Web 传入值不生效,但该字段会经 Broker 传输;凭据真实值只在中心与 Janus 之间生效,属部署敏感配置。
  • Web 按含 ,handle-info, 的回包识别应答(期望事件回显 transaction,该回显行为属 Janus 实现,缺证);subscribers 缺省按 0 处理。

调用关系与资源清理

  • 时序:与 keepalive 并行周期执行;数据展示于直播画面观看人数。
  • 查询目标为设备发布者句柄;设备会话终止后查询无意义(返回形态缺证)。

已知缺口

  1. Janus Admin API handle_info 响应 schema(info.plugin_specific.*)、无 transaction 回包行为、权限失败形态源码不在本工作区。
  2. 中心侧管理凭据(janus admin secret)的实际部署值未核验;未执行真实联调。