WebSockets vs. Server-Sent Events vs. Long-Polling vs. WebRTC vs. WebTransport

Long Polling y patrones de sondeo

  • Algunos echan de menos el long polling por su simplicidad y su compatibilidad con HTTP; otros sostienen que las implementaciones del mundo real muestran que no es “estúpidamente simple” una vez que consideras timeouts, proxies, reintentos y el orden de los mensajes.
  • Se elogia el long polling por su interoperabilidad con herramientas y APIs HTTP genéricas.
  • Varios señalan que cualquier sistema de tipo push necesita una forma de rehidratar el estado completo y manejar las actualizaciones perdidas; en ese punto, el sondeo simple o los “endpoints de eventos” con cursor pueden resultar atractivos.
  • Debate sobre escalabilidad: un lado dice que el long polling escala linealmente como otras técnicas; otro observa que la rotación adicional de suscripciones y la sobrecarga de RTT/paquetes lo hacen “el menos escalable” en la práctica.

Server-Sent Events (SSE)

  • Muy apreciado por su simplicidad, su fácil integración con stacks básicos (p. ej., Apache + PHP) y su compatibilidad con CDNs.
  • Se ve como “long polling/Comet estandarizado” sobre respuestas fragmentadas.
  • Limitaciones: solo texto (binario requiere base64 o codificaciones especiales), límites de conexión impuestos por el navegador con HTTP/1.1 y control limitado de cabeceras en la API nativa EventSource.
  • Entre los paliativos están la multiplexación HTTP/2/3, el sharding de dominios, SharedWorkers/broadcast channels y clientes SSE personalizados con opciones más ricas.
  • Algunos informan problemas de fiabilidad de SSE en entornos cerrados/empresariales y con ciertos frameworks de servidor.

WebSockets

  • Populares como opción predeterminada para tiempo real bidireccional, a menudo con JSON-RPC encima.
  • Críticas: más difíciles de escalar y operar, falta de multiplexación y backpressure incorporados (aunque el nuevo WebSocketStream pretende ayudar), y problemas persistentes con firewalls/redes corporativas en algunos entornos.
  • Muchos usan bibliotecas que proporcionan alternativas de reserva (long polling, SSE, etc.) para lidiar con proxies rotos y navegadores antiguos.

WebRTC y WebTransport

  • WebRTC funciona de forma fiable en la práctica para atravesar NAT y está ampliamente desplegado; es más adecuado para P2P y medios ricos, y menos para server push simple.
  • WebTransport se valora por los streams, el backpressure y evitar el head-of-line blocking; algunos ya lo usan para juegos.
  • Preocupación: UDP/HTTP/3 puede estar bloqueado en algunas redes, obligando a implementaciones duales con WebSockets.

Streaming HTTP y variantes

  • Varios destacan el streaming genérico de respuestas HTTP (p. ej., JSONL sobre fetch streams, transportes HTTP-streaming) como una opción potente, a menudo infrautilizada, y a veces preferida frente a SSE para streams finitos.

Autenticación, segundo plano y móvil

  • Las APIs de navegador para SSE/WebSockets hacen incómodas las cabeceras de autenticación personalizadas; las cookies son la solución más común, o bien clientes personalizados.
  • El comportamiento en móvil y en segundo plano es problemático: radios, timeouts y la duración de vida de los workers pueden romper conexiones “siempre activas”; las APIs de push y los botones de refresco siguen siendo fallbacks importantes.