web-dev-qa-db-ja.com

engine.ioとsocket.ioの違いは何ですか?

この質問が重複している場合は修正してください。 node.jsについては、クライアントアプリケーションからサーバーアプリケーションへのリアルタイムソケット接続にsocket.ioを使用しています。 engine.ioについて聞いたばかりですが、engine.ioはsocket.ioの代替品ですか? engine.ioのWebサイトで有用な情報が見つかりませんでした

前もって感謝します

46
L N

engine.io は、socket.ioよりも低レベルのライブラリです。

エンジンはSocket.IOに対して、ConnectはExpressに対してです。

低レベルの抽象化が必要な場合は、engine.ioを使用します。 Webソケットの抽象化が必要な場合は、socket.ioを使用し続けてください。

engine.ioは、socket.ioの上にライブラリ/フレームワークを構築する場合に、より関心があります。

socket.ioの上にアプリケーションを構築している場合、socket.ioはより興味深いものです。

91
Raynos

socket.ioはengine.ioの上に構築されます。

socket.ioは、添え字付きのengine.ioです。

socket.ioのすべて(redisストア、グループなど)が必要ない場合は、エンジンを使用してください。

20
kidcapital

ゲームに少し遅れました:-)が、後世のためにここで言及します。

「下位レベル」であることは別として、最も重要な違いの1つは、socket.ioが最初にwebsocketから開始し、機能するトランスポートが見つかるまで低下することです。一方、engine.ioは短いポーリングで開始されます(壁にぶつかるまで横でアップグレードします)。

どうして?

ユーザーの観点からすると、WebSocket接続が失敗すると、リアルタイムアプリケーションがデータの交換を開始するまで少なくとも10秒待機することになります。これにより、ユーザーエクスペリエンスが知覚的に損なわれます。

現時点(2013年)では、websocketはまだ普及していないため(たとえば、古いブラウザー、携帯電話ネットワークなど)、XHR 1stから始めるのが賢明です。

詳細については、 https://github.com/LearnBoost/engine.io (目標セクション)を参照してください。

18
khoomeister

Socket.IO v0.9は時代遅れで少しバグが多く、Engine.IOは暫定的な後継機です。 Socket.IO v1.0(近日リリース予定)はEngine.IOを使用し、v0.9よりもはるかに優れています。

私のテストでは、Engine.IOはSocket.IO v0.9よりもパフォーマンスが高いようです。比較を参照してください。 https://medium.com/node-js-javascript/b63bfca0539

Socket.IOは、接続が失われた後しばらくの間再接続を試みますが、Engine.IOはそうしません。

Socket.IOは部屋をサポートしていますが、Engine.IOはサポートしていません。異なるデータ/チャネルをリッスンする接続がある場合は、(これらのモジュールまたは独自の実装を介して)ルームが必要になります。

8
Deniz Ozger