Cómo usar eventos HTML5 Servidor-SENT

Cómo usar eventos HTML5 Servidor-SENT

Objetivo

Después de leer este tutorial, debería poder entender y aprovechar los eventos de Servidor HTML5.

Requisitos

  • No se necesitan requisitos particulares

Convenciones

  • # - requiere que el comando Linux dado se ejecute con privilegios raíz
    directamente como usuario raíz o mediante el uso de sudo dominio
  • ps - Dado el comando Linux para ser ejecutado como un usuario regular no privilegiado

Introducción

Los eventos de Servidor-Sent son un Html5 tecnología que permite a un cliente monitorear automáticamente las notificaciones de eventos desde un servidor y reaccionar según sea necesario. Esta tecnología es muy útil para notificar a los eventos en vivo, implementar, por ejemplo, una aplicación de mensajería en vivo o un feed de noticias. En este tutorial veremos cómo implementar esta tecnología utilizando PHP y JavaScript.

Un ejemplo simple

En aras de este tutorial, trabajaremos con una lista de "animales" que se mostrarán en una página simple HTML. Mientras que en una aplicación del mundo real, los datos se habrían almacenado y recuperado de una base de datos, en este caso, por simplicidad, utilizaremos una matriz PHP. Lo que queremos obtener es una notificación en tiempo real de los cambios en la lista de animales, para que podamos actualizar nuestra página HTML en consecuencia, sin tener que actualizarlo.



El código del lado del servidor

Para empezar, llenemos nuestra pequeña variedad de animales en el animales.php Archivo (estamos trabajando en el directorio raíz de nuestro servidor web virtualhost):

Copiar

Guarde y cierre el archivo como animales.php. Ahora, para la parte más importante: tenemos que escribir el script que emitirá el mensaje que recientemente será utilizado por nuestro código JavaScript del lado del cliente. Con mucha fantasía nombraremos el guión guion.php. El código es muy simple, aquí está:

Copiar

Lo primero que debe notar aquí es que llamamos al encabezamiento función en las líneas 2-3: esta es una función utilizada para enviar encabezados HTTP crudos. En este caso lo llamamos dos veces: el primero en las líneas 2 para configurar el Control de caché campo de encabezado y especificar las directivas de almacenamiento en caché (sin almacenamiento en caché de la página), el segundo en las líneas 3, para establecer el Tipo de contenido a Texto/transmisión de eventos. Esa configuración de encabezados es necesaria para que nuestro script funcione correctamente. También es importante notar que para funcionar correctamente, el encabezamiento La función siempre debe llamarse antes de crear cualquier otra salida.

Después de configurar los encabezados HTML, acabamos de usar el requerir una vez declaración en las líneas 6 para requerir el contenido del animales.php archivo, que contiene la matriz que escribimos antes. En un escenario de caso real, esto habría sido reemplazado por un Consulta SQL Para recuperar dicha información de una base de datos.

Finalmente en las líneas 9-11, enviamos nuestra respuesta al cliente: el codificado Matriz de "animales". Una cosa muy importante a tener en cuenta: el formato de eventos del lado del servidor requiere que cada respuesta enviada por el servidor sea prefijada por el datos: cuerda y seguido de dos personajes de Newline. En este caso usamos el \norte Newline personaje porque estamos ejecutando en una plataforma similar a UNIX; Para garantizar la compatibilidad multiplataforma, habríamos utilizado el Php_eol constante.

Incluso es posible romper el mensaje de respuesta en múltiples líneas: en este caso, cada línea, como se dijo anteriormente, debe comenzar con "datos:" y debe ser seguido por un solo carácter de nueva línea. La nueva línea adicional se requiere solo en la última línea.

El servidor también puede controlar con qué frecuencia el cliente debe intentar volver a conectarse (el valor predeterminado es 3 segundos), y el nombre del evento (predeterminado es "mensaje") enviado al cliente. Para personalizar el primero, debemos usar el rever Directiva seguida del intervalo de tiempo deseado, expresado en milisegundos. Por ejemplo, para configurar un intervalo de 1 segundo:

echo "Vuelve a intentarlo: 1000 \ n";

Observe que incluso aquí, se requiere una nueva línea. Para cambiar el nombre del evento, en cambio, debemos usar el evento directiva:

echo "Evento: customevent \ n";

El evento predeterminado es "mensaje": esto es importante porque el evento debe especificarse en el código JavaScript del cliente al agregar el oyente del evento, como veremos en un momento.

Después de enviar nuestra respuesta, llamamos al enjuagar Función: Esto es necesario para obtener los datos al cliente.



Código del lado del cliente

Lo primero que vamos a hacer el lado del cliente es preparar nuestro archivo HTML con la lista de animales disponibles:

   
Copiar

Este es realmente un HTML básico con un poco de PHP para mostrar la lista de animales en el momento de la carga de la página e incluir nuestro .archivo js (script.js), pero servirá nuestro propósito. Ahora, veamos cómo podemos usar eventos del lado del servidor. Lo primero que tenemos que hacer es instanciar un Objeto de fuente de eventos. En nuestro archivo JavaScript, escriba:

Let Eventsource = New Eventsource ('Script.php '); 
Copiar

Como puede ver, pasamos la ruta a nuestro script de servidor como argumento en el Eventsurce constructor de objetos. Este objeto abrirá una conexión al servidor. Ahora debemos agregar un oyente de eventos, para que podamos realizar algunas acciones cuando se recibe un mensaje del servidor:

Let Eventsource = New Eventsource ('Script.php '); eventsurce.addEventListener ("Mensaje", function (Event) Let data = json.parse (evento.datos); Let Listelements = documento.getElementsBytagName ("li"); para (deja i = 0; yo < listElements.length; i++)  let animal = listElements[i].textContent; if (!data.includes(animal))  listElements[i].style.color = "red";   ); 
Copiar

Cuando se recibe un mensaje, usamos el Json.analizar gramaticalmente método en la línea 4 para transformar los datos enviados por el servidor (una cadena, contenida en el datos Propiedad del objeto del evento), en una matriz de JavaScript.

Después de eso, en las líneas 7-11 a través de todos los elementos con el

  • etiqueta, que son los elementos de nuestra lista de animales: si algún elemento no parece estar en la matriz enviada por el servidor, el color del texto contenido en la lista se cambia a rojo, porque el "animal" no es Más tiempo disponible (una mejor solución habría sido incluir solo el nombre de elemento cambiado o faltante en la respuesta del servidor, pero nuestro propósito aquí es demostrar cómo funciona la tecnología). El cambio en la página ocurrirá en tiempo real, por lo que no es necesario actualizar. Puede observar cómo nuestra página aprovecha los eventos enviados por el servidor, en el video a continuación:

    Como puede ver, tan pronto como se elimine el "gato" de la matriz de "animales" (nuestra fuente de datos), el elemento que se muestra en la página HTML se modifica para reflejar ese cambio.

    La secuencia de datos entre el servidor y el cliente puede interrumpirse utilizando el cerca método del eventsurce objeto:

    eventsurce.cerca()

    Para manejar la conexión abierto, y error Eventos, los oyentes de eventos dedicados se pueden agregar al objeto.

    Tutoriales de Linux relacionados:

    • Cosas para instalar en Ubuntu 20.04
    • Cómo enviar notificaciones de escritorio usando Notify-Send
    • Cómo manejar los eventos ACPI en Linux
    • Cómo construir una aplicación Tkinter utilizando un objeto orientado ..
    • Una introducción a la automatización, herramientas y técnicas de Linux
    • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
    • Comandos de Linux: los 20 comandos más importantes que necesitas ..
    • Comandos básicos de Linux
    • Lista e instalación de clientes FTP en Ubuntu 22.04 Linux ..
    • Descargar CD/DVD Linux en vivo