Twitterストリーミングエンドポイントがどういうわけか遅い接続の検出をサポートしていることを知りました。
参照:https ://dev.twitter.com/docs/streaming-apis/parameters#stall_warnings (およびページの下部)
アイデアは、ソケット送信がおそらくデータを1つずつ処理するということです。また、クライアントが1つのパケットを受信したことを認識しているため、キューを維持し、そのサイズを常に把握できます。
クライアントがそれぞれに確認パケットを送信するのは簡単です。ただし、TwitterStreamingAPIの場合はそうではありません。これは一方向の転送です。
私の質問は、彼らはどのようにしてそれを達成したのかということです。非常に低レベルのrawソケットのサポートがなければ、それを行う方法はわかりませんが、ここで何かを忘れている可能性があります。いくつかの低レベルのサポートがあれば、おそらく各パケットのACKを取得できます。それも可能ですか?ACKはどういうわけか追跡できますか?
これがどのように行われたか他のアイデアはありますか?たとえばPythonでこれを行う方法はありますか?または、他の言語の例をいただければ幸いです。
あるいは、私はここで頭を抱えていて、socket.sendを介してまだ処理されていないバイト数を追跡するために使用しているだけですか?しかし、それはクライアントの接続の悪い兆候ではありませんか?