socket example websocket socket.io

websocket - example - socket.io id



¿Pasando de socket.io a websockets crudos? (1)

La biblioteca socket.io agrega las siguientes características más allá de webSockets estándares:

  1. Selección automática de larga encuesta vs. webSocket si el navegador no es compatible con webSockets o si la ruta de red tiene un proxy / firewall que bloquea webSockets.

  2. Reconexión automática del cliente si la conexión se desactiva (incluso si el servidor se reinicia).

  3. Detección automática de una conexión muerta (mediante el uso de pings regulares para detectar una conexión que no funciona)

  4. Esquema de transmisión de mensajes con conversión automática a / desde JSON.

  5. El concepto de salas en el lado del servidor donde es fácil comunicarse con un grupo de usuarios conectados.

  6. La idea de conectarse a un espacio de nombres en el servidor en lugar de simplemente conectarse al servidor. Esto se puede usar para una variedad de capacidades diferentes, pero lo uso para decirle al servidor a qué tipos de información me suscribo. Es como la conexión a un canal en particular.

  7. Estructuras de datos del lado del servidor que realizan un seguimiento automático de todos los clientes conectados para que pueda enumerarlos en cualquier momento.

  8. Arquitectura de Middleware incorporada a la biblioteca de socket.io que se puede usar para implementar cosas como la autenticación con acceso a las cookies desde la conexión original.

  9. Almacenamiento automático de las cookies y otros encabezados presentes en la conexión cuando se conectó por primera vez (muy útil para identificar a qué usuario está conectado).

  10. Capacidades de transmisión del lado del servidor para enviar un mensaje común a todos los clientes conectados, a todos los clientes en una sala o a todos los clientes en un espacio de nombres.

  11. El etiquetado de cada mensaje con un nombre de mensaje y el enrutamiento de los nombres de los mensajes en un eventEmitter para que pueda escuchar los mensajes entrantes al escuchar en un eventEmitter el nombre del mensaje deseado.

En este momento estoy usando socket.io con websockets obligatorios como el transporte. Estoy pensando en moverme a websockets sin procesar, pero no tengo claro qué funcionalidad perderé al moverme de socket.io. Gracias por cualquier orientación.