Skip to content

限流与重试

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

使用建议

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

触发限流

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

json
{
  "type": "reply",
  "requestId": "req_001",
  "code": "RATE_LIMITED",
  "message": "Too many requests",
  "data": {
    "retryAfterSeconds": 1,
    "rateLimitScope": "device.dispatch",
    "limit": 6,
    "windowSeconds": 10
  }
}

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

data.rateLimitScope 表示触发限制的计数范围,不是 API Client 权限。旧字段 data.scope 暂时保留用于兼容,新客户端不应继续依赖。

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

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

Docs buildVersion v1.3.6-20260720-180213-70
Copyright © 2026 WLTE