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
.
- La comunicación es asíncrona desde el servidor al cliente,
- Todos los navegadores modernos admiten eventos enviados por el servidor,
Desventajas
- SSE está restringido al transporte de mensajes UTF-8, no se admiten datos binarios.
- 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:
- WebRTC,
- Sondeo de cliente,
- WebSocket,
- 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.