Socket.io -XHR Polling vs FlashSocketおよびWebSocket
質問
node.jsとsocket.ioを使用します。 socket.ioとの接続速度に問題があります。 Internet ExplorerとOperaでは、接続速度に問題があります。 -FlashSocketまたはWebSocketを使用するとき。輸送モードのXHR接続のモードを使用すると、すべてのブラウザー(すなわち、FF、Chrome、Opera)で高速です。
輸送モード-XHRポリングとフラッシュ /ウェブソケットの違いは何ですか?輸送の最良のモードは何ですか?接続速度を最適化する方法socket.io?
アドバイスをありがとう!
解決
Webブラウザー間で接続の一般的な速度が時間の経過とともに異なっていた場合、私は驚かされますが、インターネットエクスプローラーとオペラの初期接続に遅延が表示される理由は、ネイティブWebsocketサポートが利用できないためです。デフォルトで無効になっています。したがって、FlashSocketを選択すると、接続が確立される前に追加のFlashオブジェクト(SWFファイル)をダウンロードする必要があります。
WebSocketsはIE10で導入されており、Operaでは利用可能ですが、デフォルトでは無効になっています。
輸送モード-XHRポリングとフラッシュ /ウェブソケットの違いは何ですか?
- xhr -polling-参照 http://en.wikipedia.org/wiki/push_technology#long_polling
- FlashSocket Connection -Flash Socketオブジェクトを使用してWebSocketサーバーへの接続を確立し、WebSocketプロトコルを使用して通信します。これは、FlashとJavaScriptの間に相互作用があることを意味し、追加のFlashオブジェクト(SWFファイル)をダウンロードする必要があることを意味します。
輸送の最良のモードは何ですか?
ネイティブにサポートするWebブラウザー用のWebSockets(Chrome、Firefox、Safari)。 Flashオブジェクト(SWFファイル)がブラウザキャッシュにある場合、接続が高速になります。そうでない場合は、遅延があります。 XHRロングポリングは優れたソリューションであり、クロスブラウザーを動作させますが、ネガがあります。
- 世論調査の間に、展示されているデータが古くなっている可能性があります(古い)。
- httpの長期pollingは複数の接続を使用して双方向機能をシミュレートするため、WebSocketsが使用する単一のTCP接続よりも効率の低い接続方法です。
- HTTPにはオーバーヘッドがあります。これは、リクエストとその後のリクエストごとに追加のヘッダー情報が送信されることを意味します。
接続速度を最適化する方法socket.io?
(私はsocket.ioをかなり初めてですこれは単なる提案です)
私は見ます socket.ioドキュメントの構成 条件付きで設定できるかどうかを確認します transports
接続しているブラウザに基づいています。あなたの経験に基づいて、これは次のとおりです。
- Chrome、Firefox、Safari -WebSockets
- つまり、オペラ-XHRポルリング
他のヒント
接続時間を短縮するには、「Connect Timeout」パラメーターを使用して、接続タイムアウト(デフォルトでは10秒)を減らすことができます。
たとえば、接続タイムアウトを1秒に減らすには:
socket = io.connect('http://your-site.com',{'connect timeout': 1000});