Los eventos enviados por el servidor ( también conocidos como SSE o Server Sent Events) permiten a los servidores web enviar notificaciones/mensajes/eventos en tiempo real y de baja latencia al navegador en una respuesta HTTP basada en texto, a través de una API de JavaScript llamada EventSource.

  1. La comunicación es asíncrona desde el servidor al cliente,
  2. Todos los navegadores modernos admiten eventos enviados por el servidor,

Desventajas

  1. SSE está restringido al transporte de mensajes UTF-8, no se admiten datos binarios.
  2. SSE está limitado al número máximo de conexiones abiertas. Esto puede ser especialmente doloroso al abrir varias pestañas, ya que el límite depende del navegador y se establece en un número muy bajo (6).

Podemos hablar de 3 formas diferentes de realizar actualizaciones de servidor a cliente:

  1. WebRTC,
  2. Sondeo de cliente,
  3. WebSocket,
  4. Eventos enviados por el servidor (SSE).

Sondeo de clientes

El cliente envía solicitudes al servidor a intervalos regulares para nuevas actualizaciones.

WebSocket

Es una tecnología muy popular que proporciona transferencia de datos bidireccional. Websocket no se basa en el protocolo HTTP, por lo que requiere instalación e integraciones adicionales para usarlo. Y es en comparación, más difícil de implementar.

SSE

Para iniciar una conexión con SSE, es necesario que el cliente (navegador) establezca una conexión mediante EventSource. Si el servidor establece que ha pasado tiempo suficiente (timeout) desde el último evento, cerrará la conexión. Las conexiones SSE vienen con reconexión automática, ID de eventos y la capacidad de enviar eventos arbitrarios.