Notificaciones en tiempo real a escala con Redis Pub/Sub y Socket.IO
Cómo Redis Pub/Sub y el adaptador Redis de Socket.IO permiten escalar notificaciones WebSocket a través de múltiples servidores Node.js.
Las notificaciones en tiempo real son sencillas en un único servidor. Una conexión WebSocket queda unida a un proceso, y en cuanto ocurre un evento, ese proceso puede enviar el mensaje directamente al cliente.
La arquitectura cambia cuando el tráfico crece y varias instancias de Node.js se colocan detrás de un balanceador. Si un usuario está conectado al Servidor 1 y otro al Servidor 2, una notificación generada en el Servidor 1 no puede llegar al segundo usuario a menos que los servidores compartan estado.
Redis Pub/Sub es el backplane estándar para resolver ese problema. Cada instancia de Node.js mantiene una conexión abierta con Redis, y cuando un servidor necesita difundir una notificación, publica el evento en un canal en lugar de asumir que todos los destinatarios están conectados localmente.
Todos los demás servidores se suscriben al mismo canal. Cuando el Servidor 2 recibe el evento publicado, puede revisar sus sockets locales y entregar la notificación a los usuarios relevantes conectados a esa instancia.
El adaptador oficial @socket.io/redis-adapter abstrae la mayor parte de esta coordinación. Eso permite escalar de un servidor a muchos sin reescribir la lógica principal de notificaciones cada vez que el tráfico crece.
La lección más amplia es arquitectónica: los sistemas en tiempo real no escalan solo con WebSockets. Escalan cuando el manejo de conexiones, la distribución de eventos y la infraestructura horizontal se diseñan como un solo sistema.

