Guía práctica para decidir entre cuatro patrones de comunicación en tiempo real según la dirección del flujo y el tipo de receptor.
HTTP es un protocolo dirigido por el cliente: el servidor solo responde cuando se le pregunta. Eso funciona bien hasta que las actualizaciones pueden llegar en cualquier momento. Consultar cada pocos segundos (polling) obliga a elegir entre retrasos o peticiones inútiles. En esta guía repasamos cuatro alternativas descritas en el artículo original de AlgoMaster y proponemos un método sencillo para decidir cuál encaja en tu caso.
Lo que necesitas
Basta con tener claro qué tipo de comunicación necesita tu sistema: quién envía los datos, con qué frecuencia y si el receptor es un navegador o un servidor. Si quieres profundizar, el curso System Design Fundamentals tiene un capítulo por cada patrón.

Los cuatro patrones, en breve
Long Polling (detalle aquí): el cliente hace una petición y el servidor la mantiene abierta hasta que hay datos. Al recibir la respuesta, el cliente abre otra inmediatamente. Su gran ventaja es la simplicidad, porque usa HTTP estándar y funciona con navegadores, proxies y balanceadores existentes. Su coste: cada actualización arrastra cabeceras y autenticación, y hay un hueco entre una respuesta y la siguiente petición en el que se pueden perder eventos.
Server-Sent Events (detalle aquí): una única conexión HTTP que permanece abierta, por la que el servidor envía eventos en un formato de texto sencillo. Los navegadores lo soportan de forma nativa con EventSource y se reconectan solos. Es unidireccional: solo del servidor al cliente. Encaja con notificaciones, progreso de tareas, paneles de monitorización o texto generado por modelos de lenguaje.
WebSockets (detalle aquí): comunicación persistente y bidireccional. Empieza como una petición HTTP con Upgrade: websocket; si el servidor acepta, responde 101 Switching Protocols y ambos lados pueden enviar mensajes en cualquier momento mediante tramas ligeras. Webhooks (detalle aquí) completan el cuadro para la comunicación entre servidores.
Cómo elegir paso a paso
- Define la dirección del flujo: ¿solo el servidor emite datos o ambos extremos necesitan enviar mensajes en tiempo real?
- Si el servidor emite y el cliente solo escucha, empieza por SSE: es más ligero que Long Polling y se reconecta solo.
- Si el cliente también envía con frecuencia (juegos, chats, edición colaborativa), pasa a WebSockets.
- Si no puedes usar conexiones persistentes o tu infraestructura es muy restrictiva, recurre a Long Polling por su compatibilidad con HTTP estándar.
- Si quien debe enterarse es otro servidor y no un navegador, valora un Webhook en lugar de mantener una conexión abierta.
- Define cómo recuperar eventos perdidos: un identificador o cursor del último evento recibido.
Un ejemplo mínimo con SSE
El servidor responde con Content-Type: text/event-stream y cada evento lleva un id y un data, separados por una línea en blanco. En el navegador, el consumo es corto:
const events = new EventSource('/events');
events.onmessage = (event) => {
showNotification(JSON.parse(event.data));
};Si el servidor etiqueta los eventos con id, el navegador enviará la cabecera Last-Event-ID al reconectar, y el servidor podrá reanudar desde ese punto en lugar de empezar de cero. Con Long Polling conviene replicar la idea a mano: el cliente manda el ID del último evento recibido y el servidor devuelve primero lo pendiente antes de quedarse esperando.

Fuente original: blog.algomaster.io
Artículo generado mediante AI.larebelion



Comentarios
Publicar un comentario