Server-Initiated Events (SSE) es un estándar web que define una API para que un servidor envíe datos de texto a un cliente (normalmente un navegador web) a través de una conexión HTTP de larga duración. A diferencia de los WebSockets, SSE es unidireccional, lo que significa que el cliente no puede enviar datos al servidor a través de la misma conexión. Utiliza el tipo de contenido `text/event-stream` y se basa en el protocolo HTTP, lo que simplifica su implementación y despliegue al aprovechar la infraestructura existente (proxies, balanceadores de carga). La conexión se mantiene abierta y el servidor puede enviar múltiples eventos en cualquier momento, cada uno con un formato específico que incluye un `event` type, `data`, `id`, y `retry` time.

En el mundo real, SSE se utiliza en sistemas donde las actualizaciones en tiempo real son cruciales y la comunicación es predominantemente del servidor al cliente. Ejemplos concretos incluyen paneles de control en tiempo real que muestran métricas de sistemas (ej. Grafana, aunque puede usar otras tecnologías), feeds de noticias en vivo, notificaciones de usuario (ej. actualizaciones de estado de pedidos en un e-commerce), o la transmisión de logs en tiempo real desde un servidor a una interfaz de usuario. Frameworks como Spring WebFlux en Java o Express.js en Node.js ofrecen soporte nativo o librerías para implementar SSE de manera eficiente. Un caso de uso notable es la transmisión de datos de precios de acciones o resultados deportivos en vivo a múltiples clientes.

Para un arquitecto, SSE es una opción atractiva cuando se necesita una comunicación unidireccional en tiempo real con baja latencia y se desea evitar la complejidad de WebSockets. Su naturaleza basada en HTTP simplifica la integración con la infraestructura de red existente (firewalls, proxies, CDNs) y la gestión de la conexión, ya que la reconexión automática está integrada en el estándar. Sin embargo, su limitación a datos de texto y la falta de bidireccionalidad lo hacen inadecuado para aplicaciones que requieren comunicación cliente-servidor constante o el envío de datos binarios. La elección entre SSE, WebSockets o polling regular depende de los requisitos específicos de la aplicación en cuanto a bidireccionalidad, tipo de datos, sobrecarga de conexión y compatibilidad con la infraestructura. SSE ofrece un buen equilibrio entre simplicidad y rendimiento para casos de uso de 'push' de datos.