限流与重试
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 的限流与重试处理。
