2011-12-17 17 views
41

Corrígeme si la pregunta es un duplicado. Con respecto a node.js, estoy usando socket.io para la conexión de socket en tiempo real desde la aplicación cliente a la aplicación del servidor. Acabo de enterarme de engine.io, ¿es engine.io un reemplazo para socket.io? no he podido encontrar ninguna información útil sobre engine.io página web¿Cuál es la diferencia entre engine.io y socket.io?

Gracias de antemano

Respuesta

81

engine.io es una biblioteca de nivel más bajo que socket.io.

El motor es para Socket.IO lo que Connect is to Express.

Si desea la abstracción de nivel inferior, use engine.io. Si quieres una abstracción de websocket, sigue usando socket.io.

engine.io es de más interés para usted si está creando una biblioteca/framework encima de socket.io.

socket.io es de más interés para usted si está creando una aplicación encima de socket.io.

+0

Gracias por el enlace, exactamente lo que necesitaba: D –

+0

Claro Respuesta, Gracias! Entonces, si necesito multiplexar, debería usar Socket.IO – Julian

18

socket.io está construido en la parte superior de engine.io.

socket.io es engine.io con campanas y silbatos.

si no necesita todo lo que tiene socket.io (tienda redis, grupos, etc.) simplemente use el motor.

+1

Creo que cuando Socket.IO 1.0 salga se compilará en Engine.IO, pero en este momento (0.9) no es: https://groups.google.com/d/msg/socket_io/BudZpQiyMbQ/tnm-I-WNJWkJ – bendytree

13

Un poco tarde para el juego :-), pero lo mencionaré aquí para la posteridad.

Además de ser "nivel inferior", una de las diferencias más importantes es socket.io comenzará con websockets primero & se degradará hasta que encuentre un transporte que pueda funcionar. Por otro lado, engine.io comenzará con un sondeo breve (y se actualizará por un lado hasta que llegue a una pared).

¿Por qué?

Desde la perspectiva del usuario, una conexión WebSocket éxito puede traducir en un máximo de al menos 10 segundos de espera para la aplicación en tiempo real para comenzar el intercambio de datos. Esto perjudica perceptiblemente la experiencia del usuario.

En este momento (2013), los websockets aún no están presentes (por ejemplo, navegadores antiguos, redes celulares, etc.), así que es inteligente comenzar con XHR primero.

Ver https://github.com/LearnBoost/engine.io (sección de Metas) para más información.

7

Socket.IO v0.9 está desactualizado y es un poco defectuoso, y Engine.IO es el sucesor interino. Socket.IO v1.0 (que se lanzará pronto) utilizará Engine.IO y será mucho mejor que v0.9.

En mis pruebas, Engine.IO parecía funcionar mejor que Socket.IO v0.9, ver la comparación: https://medium.com/node-js-javascript/b63bfca0539

Socket.IO intenta volver a conectarse durante algún tiempo después de que se pierde la conexión, mientras que Engine.IO no.

Socket.IO admite salas mientras que Engine.IO no.Necesitará habitaciones (ya sea a través de estos módulos o de su propia implementación) si tendrá conexiones para escuchar diferentes datos/canales.

+1

¿Quisiste decir "** Socket.IO ** admite salas mientras que Engine.IO no" (como podemos leer en tu blog)? – Curious

+0

Sí, gracias por la corrección @Zub –

Cuestiones relacionadas