什么是断开连接?
为什么 stream 连接可能会断开
- 身份验证错误(例如使用了错误的令牌或错误的身份验证方法)。
- X 侧的流式服务器重启。这通常与代码部署相关,应当预期并在设计中加以考虑。
- 客户端未能跟上 stream 传递的 Posts 数量,或读取速度过慢。每个流式连接背后都有一个向客户端发送消息的队列。如果该队列随时间增长过大,连接将被关闭。
- 你的账户超过了每日/每月的 Posts 配额。
- 活跃的冗余连接过多。
- 客户端突然停止读取数据。如果从 stream 读取 Posts 的速率骤降,连接将被关闭。
- 服务器与客户端之间存在潜在的网络问题。
- 临时的服务器端问题、计划性维护和更新。(请查看状态页)
常见的断线错误包括:
预判断连与重新连接
- 你的代码应检测新内容和心跳何时停止到达。
- 如果发生这种情况,应触发重连逻辑。某些客户端和语言允许你指定读取超时,你可以将其设置为 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。