Esta tecnología, aunque menos conocida, permite enviar información del servidor al navegador de forma continua, sin necesidad de recargar la página ni de que el cliente pregunte una y otra vez.

Imagina un canal de noticias en directo, una vez lo abres, recibes las actualizaciones sin tener que pulsar “refrescar” constantemente. Eso es lo que hace SSE, mantener un canal abierto desde el servidor hacia el navegador, por donde fluyen los datos en tiempo real.

¿Qué son exactamente los Server-Sent Events?

Los SSE son un mecanismo que permite al servidor “empujar” datos hacia el cliente a través de una conexión HTTP ya establecida. Lo interesante es que no requiere protocolos adicionales ni configuraciones complejas, funciona con la infraestructura web estándar.

Se trata de una comunicación unidireccional. El servidor envía información y el cliente la recibe de manera automática. El navegador, gracias al soporte nativo de este protocolo, se encarga de mantener la conexión abierta y de reconectarse en caso de que se pierda.

Dicho de otro modo, si necesitas que el navegador esté constantemente informado de lo que ocurre en tu aplicación, pero no necesitas que el cliente responda por el mismo canal, SSE es una herramienta perfecta.

Cómo funciona SSE

Para entenderlo, veamos un ejemplo básico.

Lado del cliente (JavaScript)

El navegador abre una conexión con el servidor usando el objeto EventSource:

Con estas dos líneas, el navegador queda “suscrito” al endpoint /events. Cada vez que el servidor envíe datos, el cliente los recibirá automáticamente en event.data.

Lado del servidor (respuesta HTTP en streaming)

El servidor, en lugar de cerrar la respuesta después de un 200 OK, la mantiene abierta y va enviando mensajes en un formato especial:

Cada línea que empieza con data corresponde a un mensaje. El navegador los recibe de inmediato y los pasa al callback del cliente. No hay polling, no hay retrasos.

Ejemplo completo con Node.js

Un caso realista es montar un servidor que envíe la hora actual cada segundo. Con Express en Node.js es tan sencillo como esto:

Si abres http://localhost:3000/events en el navegador, verás un flujo de mensajes con la hora en tiempo real, cada segundo. Este mismo mecanismo puede adaptarse para notificaciones, actualizaciones de precios, métricas, etc.

Funcionalidades avanzadas de SSE

SSE no se limita a mensajes básicos. Ofrece opciones muy útiles:

Eventos con nombre (para diferenciar tipos de mensajes)
Control de reintentos (el cliente reintenta si la conexión falla)
Manejo en el cliente por tipo de evento

Con esto puedes tener un mismo stream de SSE que envía distintos tipos de eventos, cada uno manejado de forma independiente en el cliente.

Ventajas de SSE frente a WebSockets

Aunque WebSockets son más conocidos, los SSE tienen sus propias ventajas cuando solo necesitas comunicación de servidor a cliente:

  • Simplicidad: funcionan sobre HTTP estándar, sin protocolos extra.
  • Reconexión automática: el navegador se reconecta solo si la conexión se corta.
  • Integración fácil: funcionan bien detrás de proxys y balanceadores.
  • Escalabilidad natural: especialmente bajo HTTP/2, que gestiona múltiples streams.

Si tu aplicación solo requiere enviar datos hacia el navegador, SSE es mucho más práctico y con menos sobrecarga que WebSockets.

Limitaciones de SSE

Eso sí, no son la solución para todo:

  • Solo permiten comunicación unidireccional.
  • No soportan datos binarios, solo texto.
  • Algunos navegadores limitan el número de conexiones simultáneas.

Casos de uso reales de SSE

Los SSE ya se usan en muchos contextos:

  • En e-commerce, para mostrar en directo si un producto está disponible o agotado.
  • En deportes, para actualizar marcadores sin necesidad de recargar la página.
  • En DevOps, para transmitir logs de un despliegue en tiempo real.
  • En aplicaciones sociales, para mostrar al instante nuevos comentarios o reacciones.
  • En IoT, para visualizar flujos de datos de sensores de forma inmediata.

Conclusión

Los Server-Sent Events son una tecnología sencilla y potente para mantener a los usuarios siempre actualizados en tiempo real. No buscan sustituir a los WebSockets, pero sí ofrecer una alternativa más ligera cuando la comunicación solo va en una dirección.

Si necesitas notificaciones, dashboards, actualizaciones en vivo o transmisión de logs, SSE puede darte todo lo que necesitas con unas pocas líneas de código y una integración mínima en tu infraestructura.

Referencias:
· MDN Web Docs – Server-Sent Events
· WHATWG HTML Living Standard – Server-sent events

Compartir es construir