English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

HTML5 Eventos enviados por el servidor

HTML5 Eventos enviados por el servidor (server-El evento enviado (sent event) permite que la página web obtenga los datos más recientes del servidor sin recargar la página, obteniendo datos más recientes de manera dinámica.

Server-Eventos enviados (sent event) - Transmisión de mensajes unidireccional

Server-Los eventos enviados (sent event) permiten que la página web obtenga los datos más recientes del servidor sin recargar la página, obteniendo datos más recientes de manera dinámica.

Los métodos tradicionales de obtención de los datos más recientes del servidor, mediante actualizaciones o mediante temporizadores para activar, para obtener los datos más recientes. Ahora, a través de eventos enviados por el servidor Server-Al enviar eventos, se puede lograr la obtención automática de los datos más recientes.

Ejemplo: Facebook/Actualizaciones de Twitter, cotizaciones bursátiles, microblogs, resultados de eventos deportivos, mensajes dinámicos, comentarios, etc.

Admisión de navegadores

Todos los navegadores principales admiten eventos enviados por el servidor, excepto Internet Explorer.

Recibir Server-Notificación de eventos enviados

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

!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>基础教程网(oldtoolbag.com)</title>
</head>
<body>
<h1>Obtener los datos más recientes del servidor</h1>
<div id="result"></div>
<script>
if(typeof(EventSource)!=="undefined")
{
    var source=new EventSource("demo-sse.php");
    source.onmessage=function(event)
    {
        document.getElementById("result").innerHTML+=event.data + "<br>";
    };
}
else
{
    document.getElementById("result").innerHTML="Disculpa, tu navegador no admite server-sent eventos...";
}
</script>
</body>
</html>
Prueba aquí ‹/›

Análisis del ejemplo:

  • Crear un nuevo objeto EventSource, luego especificar la URL de la página que envía las actualizaciones (en este ejemplo, "demo_sse.php")

  • Se produce el evento onmessage cada vez que se recibe una actualización

  • Cuando ocurre el evento onmessage, se empuja los datos recibidos al elemento con id "result"

Detectar Server-Soporte para eventos Enviados

En el siguiente ejemplo, escribimos un código adicional para detectar la compatibilidad del navegador con los eventos de envío del servidor:

if(typeof(EventSource)!=="undefined")
{
    // El navegador admite Server-Enviado
    // Algunos códigos.....
}
else
{
    // El navegador no admite Server-Enviado..
}

Ejemplo de código en el servidor

Para que el ejemplo anterior pueda ejecutarse, también necesitas un servidor que pueda enviar actualizaciones de datos (por ejemplo, PHP y ASP).

La sintaxis de los eventos de flujo en el servidor es muy simple. "Content-Type" encabezado configurado como "text/event-stream". Ahora, puedes comenzar a enviar eventos de flujo.

Ejemplo en línea

<?php
header(&39;Content-Type: text/event-stream&39;);
header(&39;Cache-Control: no-cache&39;);
$time = date(&39;r&39;);
echo "data: The server current time: {$time}\n\n";
flush();
?>

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

<%
Response.ContentType="text/event-stream"
Response.Expires=-1
Response.Write("data: The server current time" & now())
Response.Flush()
%>

Explicación del código:

  • Establecer la cabecera "Content-Type" configurado como "text/event-stream"

  • No almacenar la página

  • Enviar fecha de envío (siempre comienza con "data: ")

  • Enviar datos de actualización de página web

Objeto EventSource

En el ejemplo anterior, utilizamos el evento onmessage para obtener mensajes. Sin embargo, también se pueden usar otros eventos:

EventoDescripción
onopenCuando se abre la conexión hacia el servidor
onmessageCuando se recibe un mensaje
onerrorCuando ocurre un error