Actualmente hay una gran cantidad de bibliotecas websocket para node.js, las más populares parecen ser:
- https://github.com/Worlize/WebSocket-Node
- https://github.com/einaros/ws
- https://github.com/LearnBoost/engine.io
- https://github.com/learnboost/socket.io
- https://github.com/sockjs
Sin embargo, no puedo encontrar comparaciones concretas sólidas entre ninguno de ellos ... Al parecer, Socket.io fue increíble, pero se ha vuelto bastante anticuado y tiene construcciones defectuosas. Tanto ws como websocket-node afirman que son los más rápidos. Y engine.io parece nuevo, pero mucho más pesado que las alertas más ligeras.
Sería sorprendente si nosotros o alguien pudiéramos armar una respuesta que sirva como guía sobre qué biblioteca de socket usar y cuándo, así como una comparación entre ellos.
Respuestas:
Hacer que la pelota ruede con esta respuesta wiki de la comunidad . Siéntase libre de editarme con sus mejoras.
ws Servidor y cliente WebSocket para node.js. Una de las bibliotecas más rápidas, si no la más rápida.
websocket-node Servidor y cliente WebSocket para node.js
websocket-driver-node Servidor WebSocket y analizador de protocolo de cliente node.js - utilizado en faye-websocket-node
faye-websocket-node Servidor y cliente WebSocket para node.js - utilizado en faye y sockjs
servidor y cliente de socket.io WebSocket para node.js + cliente para navegadores + (v0 tiene fallos más nuevos a más antiguos, v1 de Socket.io usa engine.io) + canales - utilizados en stack.io. La biblioteca del cliente intenta volver a conectarse tras la desconexión.
Servidor y cliente de sockjs WebSocket para node.js y otros + cliente para navegadores + fallos más nuevos a más antiguos
servidor y cliente de faye WebSocket para node.js y otros + cliente para navegadores + fallbacks + soporte para otros idiomas del lado del servidor
Deepstream.io servidor en tiempo real en clúster que maneja conexiones WebSockets y TCP y proporciona sincronización de datos, pub / sub y solicitud / respuesta
socketcluster Clúster de servidor WebSocket que utiliza todos los núcleos de CPU en su máquina. Por ejemplo, si usara una instancia xlarge de Amazon EC2 con 32 núcleos, podría manejar casi 32 veces el tráfico en una sola instancia.
primus Proporciona una API común para la mayoría de las bibliotecas anteriores para facilitar el cambio + mejoras de estabilidad para todas ellas.
Cuándo usar:
use los servidores básicos de WebSocket cuando quiera usar las implementaciones nativas de WebSocket en el lado del cliente, tenga cuidado con las incompatibilidades del navegador
use las bibliotecas de reserva cuando le interesen las fallas del navegador
usa las bibliotecas con todas las funciones cuando te interesan los canales
use primus cuando no tenga idea de qué usar, no esté de humor para reescribir su aplicación cuando necesite cambiar marcos debido a los requisitos cambiantes del proyecto o necesite estabilidad de conexión adicional.
Dónde probar
Firecamp es un entorno de prueba de GUI para SocketIO, WS y todas las principales tecnologías en tiempo real. Depure los eventos en tiempo real mientras lo desarrolla.
fuente
ws
.Actualización: esta respuesta está desactualizada ya que las versiones más nuevas de las bibliotecas mencionadas se lanzan desde entonces.
fuente
npm ws fue la respuesta para mí. Lo encontré menos intrusivo y más directo. Con esto también era trivial mezclar websockets con servicios de descanso. Código simple compartido en esta publicación.
fuente
ws
, comows://myserver.com
. Y sí, también se pueden configurar para que se sirvan utilizando 80 y 443 puertos. Usando un proxy inverso como nginx, puede enrutar lasWebSocket
URL del protocolo a otro puerto desde los protocolos HTTP normales.express-ws
permite agregarws
rutas en la aplicación express.