连接明细
连接明细展示当前 WS 在线会话:sessionId、connectedAt、lastHeartbeatAt 与按用户的会话数。它是“收不到消息”排查的第一站——先确认接收方是否在线,再看消息轨迹。
概念
| 字段 | 含义 | 备注 |
|---|---|---|
userId | 连接归属用户 | 按应用隔离 |
sessionId | 连接会话 ID | 一次建连一个;多端并存时多个 |
connectedAt | 建连时间 | 毫秒时间戳 |
lastHeartbeatAt | 最近心跳 | 客户端 30s ping;服务端 60s 未收 pong 判定失活 |
device | 设备标识 | 当前恒为空字符串(客户端未上报) |
connections/stats返回onlineUsers(去重用户)、sessions(会话数)、peakToday(当日峰值)。- 连接是内存态,进程重启即断开并重建;历史断线原因不保留。
- 强制下线通过封禁/Token reset 等动作触发,不是独立的踢人接口。
前置条件
- 服务端已启动(默认
http://127.0.0.1:8080),控制台入口http://127.0.0.1:8080/console/#connections(tab#connections:连接监控)。 - 请求头
X-Admin-Secret与服务端IM_ADMIN_SECRET一致(本地默认dev-admin)。 - 已在控制台选中应用;带
{appkey}的接口都按应用隔离。 - 自托管版无购买、计费、套餐、续费与发票流程(不适用项);本页只覆盖配置、查询与治理接口。
步骤
- 确认接收方是否在线
按
userId过滤连接;无结果说明当前没有 WS 会话。 - 核对心跳与会话数
lastHeartbeatAt停滞可能是弱网/挂起;多会话说明多端在线。 - 与统计对照
用
connections/stats判断是个体问题还是大面积掉线(配合告警online_drop)。 - 处置
封禁/注销会踢下线;Token reset 会让旧连接收到 kick(1002) 并断开。
参数表
| 操作 | 方法与路径 | 参数 |
|---|---|---|
| 连接列表 | GET /api/admin/apps/{appkey}/connections | userId(可选) |
| 连接统计 | GET /api/admin/apps/{appkey}/connections/stats | — |
示例
查单个用户与全量在线
Shell
curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps/demo/connections?userId=alice" \
-H 'X-Admin-Secret: dev-admin'
curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps/demo/connections/stats" \
-H 'X-Admin-Secret: dev-admin'常见问题
为什么 device 都是空?
客户端当前没有上报设备标识;字段保留但恒为空字符串,不能据此判断机型。
连接数为什么大于用户数?
多端登录会产生多个 sessionId;onlineUsers 才是去重用户数。
能看到历史断线原因吗?
不能。只保留当前会话;断线原因需结合客户端日志与告警事件。
踢下线有独立接口吗?
没有。通过封禁、注销、Token reset 等业务动作触发 kick。