2013-07-12 19 views
13

HTTPヘッダーでも接続が長時間開いたままになりますか?だから、どのような利点がありますか?websocketとhttp以外のHTTPとの接続は何ですか?keep-alive = million

誰でも私のために明確にできますか?私はそのコンセプトを忘れてしまったようです。

+0

リンク先:http://stackoverflow.com/questions/10028770/html5-websocket-vs-long-polling-vs-ajax------ http://stackoverflow.com/questions/ 11077857/what-are-long-polling-websockets-server-sent-events-sse-and-comet –

+0

"たとえばnode.jsでは、異なるソケット接続に同じメモリを共有することができるので、共有変数にアクセスできます。したがって、AJAXやロングポーリングやPHPなどの中間点でデータベースを交換する必要はありません。RAMにデータを格納したり、ソケット間で直ちに再発行することもできます。 –

+0

http://stackoverflow.com/questions/10028770/html5-websocket-vs-long-polling-vs-ajax –

答えて

14

TCP/IPレベルでは、同じように見えます。ソケットが開いています。

しかし、ブラウザの観点からは全く異なっています。キープアライブは、ブラウザがコンテンツ(例えば、画像、CSSファイル、サイトの次のページなど)をさらに要求するために再利用することです。 WebSocketsは、JavaScriptのアプリケーションコードにあるの双方向通信用です。サーバーはいつでもコンテンツを送信することができます。 JSアプリケーションは、いつでもサーバーにデータを送信できます。

SSE(別名EventSource)と比較すると価値があります。これは、サーバーがいつでもコンテンツを送信することを選択できますが、一方向です(JSアプリケーションは、より多くのデータを送信する必要があるときにXHRを使用する必要があります) )。 (WebSocketとSSEの完全な比較は非常に複雑になる可能性があるので、SSEがしばしば正しい選択であると言うことを除いて、ここではこれ以上は言及しません)。HTTP/2でServer Pushとも比較します。 SPDY)。これはサーバーが積極的にファイル(画像、CSSファイル、サイトの次のページ)をプッシュするためですが、ブラウザレベルではJavascriptから制御されていません。

+0

コンテンツでは:生きているサーバーはブラウザが要求したときにのみデータを送信します。 Webソケットブラウザで接続が開いている間に継続的に要求しているのは、サーバーが要求したいときに送信できることです。必要に応じて、手動でサーバーに送信するように要求/伝えることができます。 –

+0

私はブラウザが「継続的に要求している」とは思わない。 (毎秒新しいイメージをロードするjavascriptループがあったとしても、それはビジー状態になると思います。)また、http/1.1は、取得するコンテンツがたくさんある場合、通常はサーバーと6つの接続を確立します。 (私はあなたの質問は理論的だとは思っていますが、非常に長いキープアライブタイムはほぼ確実に全体的に悪いアイデアになるでしょう) –

+0

私はそれが長いポーリングでも/ http ..クライアントとサーバーhttp reqを送信する必要があります。サーバーはクライアントに話すこともあります。しかし、接続がタイムアウトし、最終的に不必要に接続する必要があります。しかし、私は人々がwebsocketは、より多くのクライアントがスペースを共有することを言って参照してください。それはどうやって動くの? –

関連する問題