このチャットは「ロングポーリング」または「HTTPストリーミング」を使用していますか?
-
21-09-2019 - |
質問
このチャットは「ロングポーリング」または「HTTPストリーミング」を使用していますか?
解決
それほど単純なものではありません。それは使用しています http://www.mibbit.com/chat, 、JavaScriptとJavaで書かれた完全なIRCクライアントです。でブログ http://blog.mibbit.com/.
編集: これがあなたの答えです.
最初に機能したのは、ブラウザとサーバーの間の通信でした。これは、2 xmlhttprequestsを使用して行われます。最初のものは、単にブラウザからサーバーにデータを送信することです。新しい接続を最小限に抑えるために、Keep-Aliveを利用します。
2番目のXHRは、「怠zyな投票」です。サーバーに接続し、サーバーは利用可能なメッセージが表示されるか、タイムアウトが期限切れになるまで開いています。これも維持されているため、次のリクエストは同じ接続を下げます。
最終的には、パケット(この場合はJSON)があり、いくつかのHTTPヘッダーが随時サーバーに開かれている2つの接続が保持されます。サーバーがスケーリングされることを確認するために、NIOを使用してJavaにカスタムWebサーバーを書きました。 1つのスレッドですべての接続を処理し、私が言うように、数万の接続をスケーリングします。
クライアントが新しい接続を要求した場合、Webサーバーにリクエストを送信して接続し、プロキシなどを開始します。IRC接続の場合はIDERCERSTの場合も識別サーバーを実行して、IRCサーバーが個々のブラウザを識別できるようにします。私はこの種のことをするために既存のフレームワークなどを見ましたが、私はそれがすべてがどのように機能するかを学ぶことを大切にし、私のユースケースは一般的なフレームワークよりも多くを最適化できるほど具体的であると考えました。