Saltar al contenido
Framework Ecosystems LabsUn contrato, muchos ecosistemas, la misma prueba.

🔌 Socket.IO — 2010#

⬅️ Atlas · 🟨 Ecosistema JavaScript · 🗂️ Índice

Socket.IO popularizó la comunicación bidireccional en tiempo real antes de que WebSocket fuera universal, y su valor real no estaba en la API sino en lo que resolvía por debajo: reconexión, respaldo de transporte y recuperación de mensajes.

Aparición 2010, creado por Guillermo Rauch
Clasificación realtime-library
Ecosistema Node.js
Licencia MIT
Estado 🟢 Activo
Documentación https://socket.io/docs/v4/

💡 Lo difícil no es el WebSocket#

Abrir un WebSocket es sencillo. Lo caro es todo lo demás, y Socket.IO lo trae resuelto:

Problema real Qué hace
La conexión se cae Reconexión automática con espera creciente
El entorno la bloquea Respaldo a otro transporte
Se pierden mensajes en el corte Almacenamiento temporal y reenvío
Varios servidores Adaptadores para difundir entre instancias
Detectar una conexión muerta Latido periódico

Las filas primera y cuarta son las que más se subestiman. La reconexión con espera creciente es uno de los controles de resiliencia del módulo 08, y sin él una caída breve del servidor produce una avalancha de reconexiones simultáneas que impide levantarlo.

Y la cuarta conecta con el módulo 12: el estado de conexión no está en tu proceso, así que difundir a todos los usuarios exige coordinación entre instancias. Es el mismo requisito operativo que impone Phoenix LiveView, aquí resuelto con infraestructura externa en lugar de con el runtime.

⚖️ Hoy#

WebSocket está en todos los navegadores, así que la razón original —el respaldo de transporte— pesa menos. Lo que sigue justificándolo es todo lo demás: reconexión, salas, difusión y recuperación de mensajes, que hay que construir igualmente.

🎓 Las dos lecciones#

1. El protocolo es la parte fácil. Reconexión, pérdida de mensajes y coordinación entre instancias son el trabajo real.

2. Mantener estado de conexión cambia la operación. Afinidad de sesión, difusión coordinada y reinicios no transparentes son requisitos, no detalles.

🔗 Enlaces#

Fuentes#