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