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