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

Por qué sí y por qué no — Estado de conexión con varias instancias#

⬅️ Clase 109 · 📚 Parte 8

Por qué sí Por qué no Qué se paga
Express El reparto son diez líneas y se ven enteras Ninguna ayuda: ni adaptador, ni canal, ni nada Escribir y operar el reparto uno mismo
FastAPI Igual de explícito, y con httpx el aviso es una línea Lo mismo: Starlette da el canal y se acabó Lo mismo
Spring Boot Con STOMP y un intermediario, el reparto es configuración Sin él, exactamente igual que los otros dos Añadir una pieza de infraestructura
Socket.IO El adaptador resuelve esto sin tocar el código de la aplicación Hace falta un Redis, o el equivalente, funcionando Una dependencia de infraestructura más que operar

🧭 Lo que este contrato no puede probar#

💡 Lo que hay que llevarse#

Lo primero es reconocer el fallo por su forma, porque su forma es la peor de todas: no da ningún error. Los dos servidores sanos, las conexiones abiertas, los mensajes entregados… a quien está conectado al mismo sitio. En pruebas no se reproduce nunca, porque en pruebas hay una instancia. Aparece el día que se escala, y el síntoma que llega —«a veces no me llegan los avisos»— no apunta a ninguna parte.

Lo segundo es la regla que lo detecta sin necesidad de reproducirlo: si la lista de conexiones es una variable, ya tienes este fallo. Da igual que sea un mapa, un conjunto o un registro de la biblioteca. Está en la memoria de un proceso, y el segundo proceso no la ve.

Lo tercero es qué hacer, y hay dos caminos con nombre propio:

Y lo cuarto, que es un error de razonamiento muy común: un almacén compartido de sesiones no resuelve esto. Guardar en Redis quién está conectado no reparte nada, porque la conexión física sigue viviendo en un proceso concreto. Lo que hace falta no es saber dónde está la gente: es un canal por el que un proceso pueda decirle algo a otro. Confundir las dos cosas cuesta un sprint.

Fuentes#