MEJOR SITIO PARA DESARROLLADORES WEB
HTML5 Lecciones para principiantes

Ua En De

HTML SSE API


Los eventos enviados por el servidor (Server-Sent Events - SSE) permiten que una página web obtenga actualizaciones de un servidor.


Server-Sent Events — Mensajería unidireccional

Un evento enviado por el servidor es cuando una página web recibe automáticamente actualizaciones de un servidor.

Esto también era posible antes, pero la página web tendría que preguntar si había actualizaciones disponibles. Con los eventos enviados por el servidor, las actualizaciones llegan automáticamente.

Ejemplos: actualizaciones de Facebook/Twitter, actualizaciones de precios de acciones, fuentes de noticias, resultados deportivos, etc.


Soporte del navegador

Los números de la tabla especifican la primera versión del navegador que admite totalmente los eventos enviados por el servidor.

API
SSE 6.0 79.0 6.0 5.0 11.5

Recibir notificaciones de eventos enviadas por el servidor

El objeto EventSource se utiliza para recibir notificaciones de eventos enviadas por el servidor:

Ejemplo

var source = new EventSource("demo_sse.html");
source.onmessage = function(event) {
  document.getElementById("result").innerHTML += event.data + "<br>";
};
Inténtalo tú mismo »

Ejemplo explicado:

  • Cree un nuevo objeto EventSource y especifique la URL de la página que envía las actualizaciones (en este ejemplo, "demo_sse.html")
  • Cada vez que se recibe una actualización, se produce el evento onmessage
  • Cuando ocurre un evento de mensaje, coloque los datos recibidos en el elemento con id="result"

Verifique el soporte de eventos enviados por el servidor

En el ejemplo anterior de tryit, había algunas líneas de código adicionales para verificar la compatibilidad del navegador con eventos enviados por el servidor:

if(typeof(EventSource) !== "undefined") {
  // ¡Sí! ¡Soporte de eventos enviados por el servidor!
  // Algún código.....
} else {
  // ¡Lo siento! No hay soporte para eventos enviados por el servidor.
}

Ejemplo de código del lado del servidor

Para que el ejemplo anterior funcione, necesita un servidor capaz de enviar actualizaciones de datos (como PHP o ASP).

La sintaxis del flujo de eventos del lado del servidor es simple. Establezca el encabezado "Content-Type" en "text/event-stream". Ahora puedes empezar a enviar transmisiones de eventos.

Código en PHP (demo_sse.html):

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

$time = date('r');
echo "data: La hora del servidor es: {$time}\n\n";
flush();
?>

Código en ASP (VB) (demo_sse.asp):

<%
Response.ContentType = "text/event-stream"
Response.Expires = -1
Response.Write("data: La hora del servidor es: " & now())
Response.Flush()
%>

Código explicado:

  • Establezca el encabezado "Content-Type" en "text/event-stream"
  • Especifique que la página no debe almacenarse en caché
  • Envíe los datos a enviar (Siempre comience con "data: ")
  • Vaciar los datos de salida a la página web

El objeto EventSource

En los ejemplos anteriores, utilizamos el evento onmessage para recibir mensajes. Pero también hay otros eventos disponibles:

Eventos Descripción
onopen Cuando se abre una conexión al servidor
onmessage Cuando se recibe un mensaje
onerror Cuando ocurre un error


Comentarios