このチャットは「ロング ポーリング」または「http ストリーミング」を使用していますか?
1 に答える
それほど単純なことではありません。これは、JavascriptおよびJavaで記述された完全なIRCクライアントであるhttp://www.mibbit.com/chatを使用します。http://blog.mibbit.com/のブログ。
編集: これがあなたの答えです。
私が最初に働いたのは、ブラウザとサーバー間の通信でした。これは、2つのXMLHttpRequestsを使用して行われます。1つ目は、ブラウザからサーバーにデータを送信することです。新しい接続を最小限に抑えるために、キープアライブを利用します。
2番目のXHRは、「レイジーポーリングを受信する」ものです。サーバーに接続し、利用可能なメッセージがあるか、タイムアウトが期限切れになるまで、サーバーはサーバーを開いたままにします。これもキープアライブなので、次のリクエストは同じ接続でダウンします。
最終的には、サーバーに対して開いたままの2つの接続があり、パケット(この場合はjson)と、時々いくつかのhttpヘッダーがあります。サーバーが確実に拡張できるようにするために、nioを使用してJavaでカスタムWebサーバーを作成しました。1つのスレッドですべての接続を処理し、私が言うように、数万の接続に拡張できます。
クライアントが新しい接続を要求すると、Webサーバーに要求を送信し、Webサーバーが接続して、プロキシなどを開始します。また、irc接続の場合はIDサーバーを実行して、ircサーバーが個々のブラウザーを識別できるようにします。このようなことを行うために既存のフレームワークなどを調べましたが、すべてがどのように機能するかを学ぶことを大切にし、私のユースケースは一般的なフレームワークよりも最適化できるほど具体的である可能性があると考えました。