Skip to content

限流与重试

WebSocket 连接、消息和设备操作都可能受到频率保护。客户端应把 RATE_LIMITED 视为可恢复的请求结果,而不是连接故障。

使用建议

  • session.ping 建议每 30 秒发送一次
  • 断线重连使用指数退避并加入随机抖动
  • wsTicket 仅在建连前创建,不要提前批量创建
  • 优先使用事件更新状态,不要循环发送实时状态查询
  • 同一设备的主动刷新间隔建议不少于 3
  • 同时控制多路继电器时,使用一个 relays 数组

device.state.get 会刷新整台设备,包括继电器、数字输入、模拟输入和传感器数据。它与 HTTP GET /wlte/v1/devices/{deviceId} 共用同一设备刷新额度,不要通过切换协议规避限制。

触发限流

WebSocket 请求触发限流时,会收到与原请求对应的 reply:

json
{
  "type": "reply",
  "requestId": "req_001",
  "code": "RATE_LIMITED",
  "message": "Too many requests",
  "data": {
    "retryAfterSeconds": 1
  }
}

等待 data.retryAfterSeconds 指定的时间后重试。不要通过重复建连、切换 REST API 或并发发送相同操作来规避限制。

设备刷新和设备控制按设备串行执行。如果收到 DEVICE_BUSY,表示该设备已有一条通讯正在执行。等待当前操作完成后重试;它不是连接错误,也不应通过新建连接规避。

如果 POST /wlte/v1/ws/ticket 返回 HTTP 429,按 REST API 的限流与重试处理。

Docs buildVersion v1.5.9-20260827-140125-85
Copyright © 2026 WLTE