Skip to content

心跳与重连

WebSocket 是长连接,但网络设备、代理和服务维护都可能中断连接。客户端必须实现心跳、断线检测和重连。

心跳

建议同时使用:

  1. WebSocket 协议层 Ping/Pong,用于检测网络连接。
  2. session.ping,用于确认应用层消息处理正常。

session.ping 回复:

json
{
  "type": "reply",
  "requestId": "req_ping_001",
  "code": "SUCCESS",
  "message": "OK.",
  "data": {}
}

心跳间隔应遵循 限流与重试,不要用设备状态查询代替心跳。

重连流程

  1. 检测连接关闭或心跳超时。
  2. 使用指数退避和随机抖动,避免立即高频重连。
  3. 使用有效 access token 创建新的 WebSocket ticket。
  4. 建立新连接。
  5. 对业务关键设备发送一次 device.state.get,恢复本地状态。
  6. 恢复事件消费。

每个 ticket 只能使用一次,不能在重连时复用。

事件连续性

WebSocket 不提供断线期间的事件回放。应用应:

  • 将重要事件及时持久化。
  • 使用 stateUpdatedAt 防止旧状态覆盖新状态。
  • 重连后查询关键设备,而不是刷新账号下全部设备。
Docs buildVersion v1.3.6-20260720-180213-70
Copyright © 2026 WLTE