心跳与重连
描述应用层心跳机制和断线重连策略,确保客户端在连接中断时能够正确恢复。
应用层心跳
客户端可以定期发送 session.ping,用于确认连接和会话仍可用。
Request:
json
{
"type": "request",
"requestId": "req_ping_001",
"topic": "session.ping",
"data": {}
}Reply:
json
{
"type": "reply",
"requestId": "req_ping_001",
"topic": "session.ping",
"success": true,
"data": {}
}心跳频率
建议客户端每 30 秒发送一次 session.ping。
如果心跳过于频繁,服务可能返回 session.error:
json
{
"type": "event",
"topic": "session.error",
"data": {
"code": "RATE_LIMITED",
"message": "Rate limit was exceeded."
}
}心跳超时
如果客户端长时间没有任何有效消息,连接可能会被关闭。
客户端应在连接关闭后重新建立连接。
重连规则
- 连接异常关闭后,客户端可以重新连接
- 重连前应确认 access token 仍未过期
- 如果 token 已过期,应重新获取 access token 后再连接
- 重连应使用指数退避,并加入随机抖动
- 不要在短时间内无限制重连
状态恢复
WebSocket 不保证客户端断线期间的事件补发。
重连成功后,客户端应根据业务需要重新查询当前状态:
