hyapp-server/docs/Flutter麦上心跳接口.md
2026-06-04 18:31:06 +08:00

2.8 KiB
Raw Permalink Blame History

Flutter 麦上心跳接口

地址

POST /api/v1/rooms/mic/heartbeat
Authorization: Bearer <access_token>
Content-Type: application/json

参数

字段 类型 必填 说明
room_id string 房间 ID。
command_id string 本次心跳命令 ID。同一次请求重试复用同一个值下一次心跳换新的值。
target_user_id int64 0 或不传表示当前登录用户自己。
mic_session_id string 当前麦位会话 ID必须使用上麦返回的 mic_session_id

请求示例:

{
  "room_id": "lalu_xxx",
  "command_id": "cmd_mic_heartbeat_lalu_xxx_123_001",
  "target_user_id": 0,
  "mic_session_id": "mic_xxx"
}

返回值

{
  "code": "OK",
  "message": "OK",
  "request_id": "req_xxx",
  "data": {
    "result": {
      "applied": true,
      "room_version": 18,
      "server_time_ms": 1778000005000
    },
    "seat_no": 1,
    "mic_heartbeat_at_ms": 1778000005000,
    "room": {
      "room_id": "lalu_xxx",
      "version": 18,
      "mic_seats": [
        {
          "seat_no": 1,
          "user_id": 123,
          "publish_state": "publishing",
          "mic_session_id": "mic_xxx",
          "mic_heartbeat_at_ms": 1778000005000,
          "seat_status": "publishing"
        }
      ]
    }
  }
}
字段 说明
data.seat_no 当前用户所在麦位。
data.mic_heartbeat_at_ms 服务端接受本次麦上心跳的时间UTC epoch milliseconds。
data.room 刷新后的房间快照。
data.room.mic_seats[].mic_heartbeat_at_ms 麦位最近一次服务端接受心跳的时间。
data.room.mic_seats[].publish_state publishing 表示当前会话已确认发流,可以继续心跳。
data.room.mic_seats[].seat_status 展示状态,常见值为 publishingmutedoccupiedemptylocked

相关 IM

IM 是否新增 说明
麦上心跳不广播独立 IM。
room_mic_publish_confirmed 已有 发流确认成功后进入 publishingFlutter 收到后可以开始麦上心跳。
room_mic_down 已有 用户下麦、离房、被踢、发流超时或 RTC 停止后释放麦位Flutter 收到后停止麦上心跳。

Flutter 调用规则

  1. POST /api/v1/rooms/mic/up 成功后保存 mic_session_id
  2. RTC 发流成功后调用 POST /api/v1/rooms/mic/publishing/confirm
  3. 确认成功且当前麦位 publish_state=publishing 后,周期调用 POST /api/v1/rooms/mic/heartbeat
  4. pending_publish 状态不能调用麦上心跳开始计时。
  5. 返回 mic session mismatch 时,本地保存的是旧 mic_session_id,需要刷新房间详情。
  6. 收到 room_mic_down 或接口返回用户不在麦上时,停止本地麦上心跳。