验证状态:已源码核验、未联调;适用基线:源码归纳 @ 2026-09-14
在对讲房间里创建 Janus 会话、维持其存活并在退出时销毁。本页是对讲域 server/center-server/ptt/v1/forward/janus/to 通道上 create、keepalive、destroy 三个请求的正本(operationId mqtt-janus-audiobridge-create、mqtt-janus-audiobridge-keepalive、mqtt-janus-audiobridge-destroy),覆盖各自的应答判据与超时。通道、transaction 与中心转发的公共契约适用于全部对讲 Janus 操作页,本页的「端点」小节是同类页面共享口径的展开。
| 页面/功能 | 角色或空间分支 |
|---|---|
| 对讲房间连接链路按阶段维护 Janus 会话(create/keepalive/destroy;卸载或离开时收尾) | 登录用户(机构/个人均可,取决于群组成员关系);需 MQTT 已连接且 SFU 在线门槛由上层状态机把关 |
MQTT 发布 server/center-server/ptt/v1/forward/janus/to(回包按 transaction 首段 reply topic 回流)— create / keepalive / destroy 三个 Janus 会话生命周期请求,中心原文转发到物理 Janus。
通道契约全量事实(直通白名单、消费方、转发与回包路由)见 MQTT 主题清单 · 静态 topic与动态下行(物理 server/{janusNo}/to 与 transaction 回包路由);字段级契约见 yaml 详解 · ptt forward-janus-to;janus 转发链的业务语义见设备业务 · mqtt-bridge 设备消息链。
外层 wire 载荷为 {janusNo, transaction, ...janus 报文};transaction 形如 {replyTopic},{talkGroupId},{suffix},{wireId}(wireId = YYYYMMDDHHmmssSSS-<nanoid 去符号>),reply topic 为 user/{username}/web/{sessionId}/talkgroup/{talkGroupId}/janus。三请求报文:create {janus:"create"}、keepalive {janus:"keepalive", session_id}(fire-and-forget)、destroy {janus:"destroy", session_id}。
| 阶段 | 超时/边界 | 证据 |
|---|---|---|
| create | 8 秒阶段 deadline(SETUP_STAGE_DEADLINE_MS,超时 reason Create session timed out) |
|
| keepalive | 周期 20 秒(JANUS_KEEPALIVE_INTERVAL_MS);发出后 20 秒(JANUS_LIVENESS_DEADLINE_MS)内无任何当前会话回包/事件即判失活并触发恢复 |
; |
| destroy(主动退出) | 远端清理 deadline 3 秒(REMOTE_CLEANUP_DEADLINE_MS);到点后本地继续退出流程 |
及清理分支 |
| 会话终止事件 | timeout/destroyed/hangup/detached/核心 458/插件 left/destroyed 都收敛为 sessionTerminal,驱动状态机进入恢复或失败 |
parseSessionTerminal; |
error.code=458(含无 session_id 的 keepalive 回包)判会话终止;keepalive 在途事务回包同时充当存活证明。transport 失败;请求在 outputQueue(并发 1)中排队,单条发布 8 秒 deadline(JANUS_PUBLISH_DEADLINE_MS)。max(3,n)×1000ms 退避重试,最多 99 次(AUDIOBRIDGE_MAX_AUTOMATIC_RETRIES);核心/插件不可重试错误码见 join 正本 错误表。create → attach → join → configure(媒体就绪);keepalive 每 20 秒贯穿全程。destroy 之后 session 路由缓存仍指向旧 reply topic,直到下一会话的 transaction 覆盖;Web 侧 cancelPendingRequests 在新 create 前清空在途请求。destroyed 事件形态、错误码全集)源码不在本工作区;本页以 Web 成功判据 + 中心转发/路由证据为界,未联调。server/{janusNo}/to 的物理桥(Broker 侧部署件),其可用性未核验。