切断とは何ですか?
stream 接続が切断されうる理由
- 認証エラー(誤ったトークンの使用や、誤った認証方式の利用など)。
- X 側で streaming サーバーが再起動された場合。これは通常、コードのデプロイに伴うもので、発生を想定し、その前提で設計しておく必要があります。
- クライアントが stream で配信される Posts の量に追従できていない、または data の読み取りが遅すぎる場合。すべての streaming 接続にはクライアント送信用のメッセージキューがあり、このキューが時間の経過とともに過度に増大すると、接続は終了されます。
- アカウントが日次/月次の Posts のクォータを超過した場合。
- アクティブな冗長接続が多すぎる場合。
- クライアントが突然 data の読み取りを停止した場合。stream から読み取られる Posts のレートが急激に低下すると、接続は終了されます。
- サーバーとクライアント間のネットワーク問題の可能性。
- 一時的なサーバー側の問題、計画メンテナンスやアップデート。(ステータスページを確認してください)
一般的な切断エラーには、次のようなものがあります:
切断を想定し再接続する
- 新しいコンテンツとハートビートの受信が止まったことをコードで検出してください。
- その場合は再接続ロジックを起動してください。クライアントや言語によっては読み取りタイムアウトを指定でき、20 秒に設定できます。
- サービスはこれらの切断を検知し、可能な限り速やかに再接続する必要があります。
- TCP/IP レベルのネットワークエラーの場合は線形バックオフを行ってください。これらの問題は一般的に一時的で、すぐに解消される傾向があります。試行のたびに再接続の遅延を 250ms ずつ増やし、最大 16 秒までにします。
- 再接続が適切な HTTP エラーの場合は指数バックオフを行ってください。最初は 5 秒待機し、試行のたびに倍にして最大 320 秒までにします。
- HTTP 429(レートリミット超過)の場合は指数バックオフを行ってください。最初は 1 分待機し、試行のたびに倍にします。HTTP 429 を受け取るたびに、アカウントのレートリミットが解除されるまでに待機すべき時間が増える点に注意してください。
失われたデータの復旧
レートリミットと利用状況
- x-rate-limit-limit は、15分のウィンドウ内にクライアントが実行可能なリクエストの上限数を示します。
- x-rate-limit-remaining は、15分のウィンドウ内で残っているリクエスト数を示します。
- x-rate-limit-reset は、15分のウィンドウが再開し、x-rate-limit-remaining が 0 にリセットされる時刻を示す UNIX タイムスタンプです。