什么是断开连接?
为什么流式连接可能会断开
- 认证错误(例如使用了错误的令牌或错误的认证方式)。
- X 侧重启了流式服务器。这通常与代码部署有关,属于预期情况,应在系统设计中加以考虑。
- 客户端处理不过来流中传送的 Post 数量,或读取数据过慢。每个流式连接背后都有一个发送给客户端的消息队列;如果该队列随时间增长过大,连接将被关闭。
- 你的账户超出了每日/每月的 Post 配额。
- 活跃的冗余连接过多。
- 客户端突然停止读取数据。如果从流中读取的 Post 速率骤降,连接将被关闭。
- 服务器与客户端之间可能存在网络问题。
- 临时的服务器端问题,或计划中的维护与更新。(请查看状态页)
常见的断线错误包括:
预期断连并重新连接
- 你的代码应检测新内容和心跳不再到达的情况。
- 如果发生这种情况,你的代码应触发重连逻辑。一些客户端和语言允许指定读取超时,你可以将其设置为 20 秒。
- 你的服务应检测到这些断连并尽快重连。
- 对 TCP/IP 层的网络错误采取线性退避。这类问题通常是临时的,且往往很快恢复。每次重连尝试将延迟增加 250ms,最高至 16 秒。
- 对适合重连的 HTTP 错误采取指数退避。从等待 5 秒开始,每次加倍,最高至 320 秒。
- 对 HTTP 429 错误(超出速率限制)采取指数退避。从等待 1 分钟开始,并在每次尝试时加倍。请注意,每次收到 HTTP 429 都会增加你必须等待的时间,直到你的账户不再受速率限制为止。
恢复丢失的 data
速率限制与使用
- x-rate-limit-limit 表示在 15 分钟时间窗口内你的客户端被允许发起的请求配额。
- x-rate-limit-remaining 表示在 15 分钟时间窗口内截至目前已发起的请求数。
- x-rate-limit-reset 是一个 UNIX 时间戳,表示 15 分钟时间窗口何时重新开始,届时会将 x-rate-limit-remaining 重置为 0。