"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Cómo funcionan los eventos enviados por el servidor (SSE)

Cómo funcionan los eventos enviados por el servidor (SSE)

Publicado el 2024-11-05
Navegar:233

How Server-Sent Events (SSE) Work

SSE (Server Sent Events) no se usa ampliamente en el mundo del desarrollo web, este artículo profundizará en qué es SSE, cómo funciona y cómo puede beneficiarse. su solicitud.


¿Qué es la ESS?

SSE es una forma sencilla y eficiente de enviar actualizaciones en tiempo real desde un servidor a un cliente a través de una conexión HTTP. Es parte de la especificación HTML5 y es compatible con todos los navegadores web modernos. SSE se basa en un flujo de datos unidireccional, donde el servidor envía mensajes al cliente, pero el cliente no puede devolver mensajes al servidor.

SSE utiliza un formato basado en texto conocido como "Eventos enviados por el servidor" para enviar datos al cliente. Los datos se envían como una serie de eventos, cada uno de los cuales contiene un mensaje y un tipo de evento opcional. El tipo de evento se utiliza para distinguir entre diferentes tipos de mensajes y permite al cliente manejarlos de manera diferente.

¿Cómo funciona la ESS?

El protocolo SSE funciona estableciendo una conexión HTTP persistente entre el servidor y el cliente. Esta conexión se mantiene abierta mientras el cliente quiera recibir actualizaciones del servidor. Cuando el servidor tiene nuevos datos para enviar, envía una respuesta HTTP con un tipo MIME especial "text/event-stream".

La respuesta contiene una serie de eventos, cada uno de los cuales está separado por un carácter de nueva línea (“\n”). Cada evento tiene el siguiente formato:

event: [event type]\n
data: [message]\n\n

El campo "evento" es opcional y se utiliza para proporcionar un nombre para el evento. El campo "datos" contiene el mensaje real que se envía. Los dos caracteres de nueva línea al final de cada evento se utilizan para señalar el final del evento.

Aquí hay un ejemplo de una respuesta SSE simple:

HTTP/1.1 200 OK
Content-Type: text/event-stream

event: message
data: Hello, world!

event: message
data: This is a test message.

event: customEvent
data: {"foo": "bar", "baz": 123}

En este ejemplo, enviaremos tres eventos al cliente. Los dos primeros eventos tienen el tipo de evento "mensaje" y contienen mensajes de texto simples. El tercer evento tiene el tipo de evento "customEvent" y contiene un objeto JSON como mensaje.

Cuando el cliente recibe una respuesta SSE, utiliza los datos para actualizar su interfaz de usuario. Esto se puede hacer usando JavaScript para manipular el DOM, por ejemplo.

Implementando la ESS

Implementar SSE en su aplicación es relativamente sencillo. A continuación se muestra un ejemplo de cómo implementar SSE utilizando Node.js y el marco Express:

const express = require('express');
const app = express();

// Set up SSE endpoint
app.get('/events', (req, res) => {
  // Set headers
  res.setHeader('Content-Type', 'text/event-stream');
  res.setHeader('Cache-Control', 'no-cache');
  res.setHeader('Connection', 'keep-alive');
  // Send initial event
  res.write('data: Connected\n\n');
  // Set interval to send periodic events
  const intervalId = setInterval(() => {
    res.write('data: Hello, world!\n\n');
  }, 1000);
  // Clean up on connection close
  req.on('close', () => {
    clearInterval(intervalId);
  });
});

// Start server
app.listen(3000, () => {
  console.log('Server started on port 3000');
});

En este ejemplo, estamos configurando un punto final de SSE en "/events". Estamos configurando los encabezados necesarios para SSE y enviando un evento inicial al cliente para confirmar que se ha establecido la conexión.

Luego, estamos configurando un intervalo para enviar eventos periódicos al cliente cada segundo. Finalmente, estamos limpiando el intervalo en el que el cliente cierra la conexión.

En el lado del cliente, podemos usar el siguiente código JavaScript para escuchar eventos SSE:

const source = new EventSource('/events');

source.addEventListener('message', (event) => {
  console.log(event.data);
});
source.addEventListener('error', (event) => {
  console.error('Error:', event);
});

En este ejemplo, estamos creando un nuevo objeto EventSource y pasando la URL de nuestro punto final SSE. Luego escuchamos el evento de "mensaje" y registramos los datos en la consola. También estamos atentos al evento de "error" en caso de que haya algún problema de conexión.

Tenga en cuenta que la ruta EventSource en el front-end solo puede ser utilizada por solicitudes GET; si desea utilizar POST y otros métodos HTTP, debe analizar los datos de respuesta usted mismo.

Si desea una implementación nativa de Node.js, aquí tiene una

Casos de uso para ESS

SSE se puede utilizar en una amplia gama de aplicaciones que requieren actualizaciones en tiempo real. A continuación se muestran algunos ejemplos:

  • Plataformas de redes sociales: SSE se puede utilizar para proporcionar actualizaciones en tiempo real para plataformas de redes sociales, como notificaciones de nuevos mensajes, comentarios o me gusta.

  • Aplicaciones financieras: SSE se puede utilizar para proporcionar actualizaciones en tiempo real para aplicaciones financieras, como precios de acciones, tipos de cambio de divisas o noticias.

  • Juegos en línea: SSE se puede utilizar para proporcionar actualizaciones en tiempo real para aplicaciones de juegos en línea, como notificaciones de eventos de juegos, puntuaciones o clasificaciones.

Beneficios de usar ESS

El uso de SSE tiene varios beneficios sobre otros métodos de comunicación en tiempo real, como el sondeo o WebSockets:

Eficiencia

SSE utiliza una conexión HTTP persistente, lo que significa que la sobrecarga de establecer y mantener la conexión es mucho menor que con otros métodos. Esto hace que la ESS sea más eficiente y consuma menos recursos, lo cual es especialmente importante cuando se trata de un gran número de clientes.

Sencillez

SSE es un protocolo simple que es fácil de entender e implementar. No requiere bibliotecas ni marcos especiales y se puede implementar utilizando tecnologías web estándar como JavaScript y HTTP.

Fiabilidad

SSE es un protocolo confiable que proporciona reconexión automática en caso de una interrupción de la red. Esto garantiza que el cliente seguirá recibiendo actualizaciones incluso si la conexión se pierde temporalmente.

Conclusión

Los eventos enviados por el servidor (SSE) son una forma sencilla y eficiente de enviar actualizaciones en tiempo real desde un servidor a un cliente a través de una conexión HTTP. Es parte de la especificación HTML5 y es compatible con todos los navegadores web modernos. SSE utiliza un flujo de datos unidireccional, donde el servidor envía mensajes al cliente, pero el cliente no puede devolver mensajes al servidor. Esto le evita tener que sondear constantemente el servidor en busca de eventos, lo que no solo mejora el rendimiento sino que también reduce la complejidad.

Si esto te resultó útil, considera suscribirte a mi boletín informativo para obtener más artículos y herramientas útiles sobre desarrollo web. ¡Gracias por leer!

Declaración de liberación Este artículo se reproduce en: https://dev.to/zacharylee/how-server-sent-events-sse-work-450a?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3