node.js socket.io

node.js - ¿Cuál es la diferencia entre engine.io y socket.io?



(4)

Por favor corríjame si esta 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, ¿engine.io es un reemplazo para socket.io? No pude encontrar ninguna información útil en el sitio web engine.io

Gracias por adelantado


Socket.IO v0.9 está desactualizado y tiene un poco de buggy, 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 pareció funcionar mejor que Socket.IO v0.9, vea la comparación: https://medium.com/node-js-javascript/b63bfca0539

Socket.IO intenta reconectarse durante un tiempo después de que se pierde la conexión, mientras que Engine.IO no lo hace.

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


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

Además de ser de "nivel inferior", una de las diferencias más importantes es que socket.io comenzará con websockets primero y se degradará hasta que encuentre un transporte que pueda funcionar. Por otro lado, engine.io comenzará con un sondeo corto (y se actualizará en el lateral hasta que toque la pared).

¿Por qué?

Desde la perspectiva del usuario, una conexión WebSocket fallida puede traducirse en hasta 10 segundos de espera de que la aplicación en tiempo real comience a intercambiar datos. Esto perjudica perceptivamente la experiencia del usuario.

En este momento (2013), websockets aún no es generalizado (por ejemplo, navegadores más antiguos, redes celulares, etc.), por lo que es inteligente comenzar con XHR 1st.

Consulte engine.io (sección de Objetivos) para obtener más información.


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

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

Si no necesita todo lo que tiene socket.io (redis store, groups, etc.) simplemente use el motor.


engine.io es una biblioteca de nivel inferior que socket.io.

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

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

engine.io es de mayor interés para usted si está construyendo una biblioteca / marco sobre socket.io.

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