Server-Sent Events ( SSE ) es una tecnología de envío de datos desde el servidor que permite a un cliente recibir actualizaciones automáticas de un servidor a través de una conexión HTTP, y describe cómo los servidores pueden iniciar la transmisión de datos hacia los clientes una vez que se ha establecido una conexión inicial con el cliente. Se utilizan comúnmente para enviar actualizaciones de mensajes o flujos de datos continuos a un cliente de navegador y están diseñados para mejorar la transmisión nativa entre navegadores a través de una API de JavaScript llamada EventSource, mediante la cual un cliente solicita una URL específica para recibir un flujo de eventos. La API EventSource está estandarizada como parte de HTML Living Standard [ 1 ] por WHATWG . El tipo de medio para SSE es text/event-stream.
Todos los navegadores modernos admiten eventos enviados por el servidor: Firefox 6+, Google Chrome 6+, Opera 11.5+, Safari 5+, Microsoft Edge 79+, Brave . [ 2 ] Dado que SSE no utiliza conexiones persistentes ni codificación de transferencia por fragmentos , HTTP/1.1 no es un requisito técnico.
Historia
El mecanismo SSE fue especificado por primera vez por Ian Hickson como parte de la propuesta "Aplicaciones Web WHATWG 1.0" a partir de 2004. [ 3 ] En septiembre de 2006, el navegador web Opera implementó la tecnología experimental en una función llamada "Eventos Enviados por el Servidor". [ 4 ] [ 5 ]
El W3C publicó Server-Sent Events como una recomendación el 3 de febrero de 2015, después de años de desarrollo a través de borradores de trabajo y recomendaciones candidatas. [ 6 ]
Ejemplo
var source = new EventSource ( 'updates.cgi' ); source . onmessage = function ( event ) { alert ( event . data ); };Tecnología
Al enviar datos de alta frecuencia, el servidor debe gestionar la contrapresión para evitar la saturación de los clientes. [ 7 ] Esto se mitiga de las siguientes maneras:
- Almacenamiento en búfer del lado del cliente: Los navegadores tienen un espacio de búfer limitado para los eventos entrantes enviados por el servidor [ 7 ].
- Limitación de velocidad adaptativa : Los servidores pueden ajustar la frecuencia de los eventos y supervisar el estado de la conexión.
- Agrupación de eventos: Combinar varios eventos en transmisiones más grandes y menos frecuentes.
Véase también
Referencias
- ↑ "HTML Living Standard: 9.2 Eventos enviados por el servidor" . WHATWG . 31 de marzo de 2022.
- ↑ ¿Cuándo puedo usar... eventos DOM enviados por el servidor?
- ↑ Hickson, Ian, ed. (1 de enero de 2006). "Eventos DOM enviados por el servidor" . Aplicaciones web 1.0. WHATWG . Recuperado el 9 de mayo de 2024 .
- ↑ Bersvendsen, Arve (1 de septiembre de 2006). "Transmisión de eventos a navegadores web" . dev.opera.com . Archivado del original el 4 de julio de 2014.
- ↑ Actualizaciones de transmisión con eventos enviados por el servidor, Eric Bidelman, sitio web HTML5Rocks.
- ↑ "Historial de publicaciones de Server-Sent Events" . W3C . 28 de enero de 2021. Consultado el 14 de abril de 2026 .
- 1 2 Mohamed-Ali (11 de marzo de 2025). "Eventos enviados por el servidor: una guía completa" . Medium . Archivado del original el 24 de junio de 2025. Recuperado el 14 de abril de 2026 .
Enlaces externos
- Eventos enviados por el servidor . Estándar HTML Living.
- Tecnologías de envío de datos desde el servidor HTML5, Parte 1. Introducción a las tecnologías de envío de datos desde el servidor HTML5. La Parte 1 trata sobre los eventos ServerSent.
- Uso de eventos enviados por el servidor . Un ejemplo conciso de cómo usar eventos enviados por el servidor en la Red de Desarrolladores de Mozilla.
- Referencia de EventSource en MDN
- Django push: Uso de Server-Sent Events y WebSocket con Django Django push: Uso de Server-Sent Events y WebSocket con Django.
- Eventos enviados por el servidor frente a WebSockets
- HTML5
- Terminología de Internet
- Tecnología de empuje
- Desarrollo web
- Fragmentos de Internet