Compartir a través de


Eventos enviados por el servidor

Los eventos enviados por el servidor (SSE) proporcionan un mecanismo útil para permitir que los servidores inserte actualizaciones en tiempo real a los clientes web a través de una única conexión HTTP. A diferencia de WebSockets, que permiten la comunicación bidireccional, los SSE son unidireccionales: el servidor envía datos al cliente sin esperar respuestas.

Diagrama que muestra de la puerta de enlace de aplicaciones para contenedores que controlan eventos enviados por el servidor.

Las aplicaciones que usan eventos enviados por el servidor se pueden encontrar en varios sectores, como médicos (paneles de estado de área de espera), finanzas (mostrando un ticker de stock), aviación (estado de vuelo) y meteorología (condición meteorológica actual).

Flujo de datos y conexión de eventos enviados por el servidor

Los eventos enviados por el servidor insertan datos a través del protocolo HTTP. Estos eventos son compatibles con numerosos exploradores, definidos por la interfaz EventSource y estandarizados por W3C. El siguiente proceso se produce para un evento enviado por el servidor:

  1. El cliente inicia una conexión al servidor.
  2. El servidor envía una respuesta que contiene el tipo de contenido de text/event-stream.
  3. Tanto el cliente como el servidor dejan abierta la conexión, lo que permite al servidor enviar eventos futuros.

Eventos enviados por el servidor y la puerta de enlace de aplicaciones para contenedores

Eventos y escalado enviados por el servidor

Cuando la puerta de enlace de aplicaciones para contenedores se escala verticalmente, se quitan las conexiones en curso que no se purgan después de 5 minutos. Los eventos enviados por el servidor usan lógica de reintento automático, lo que permite a la aplicación establecer una nueva conexión y empezar a recibir nuevos eventos.

Eventos enviados por el servidor y HTTP/2

Los eventos enviados por el servidor se admiten con HTTP/1.1 y HTTP/2. Si el explorador puede admitir HTTP/2, los eventos enviados por el servidor aprovechan la multiplexación para mejorar el rendimiento habilitando varias solicitudes a través de la misma conexión.

Configuración

La puerta de enlace de aplicaciones para contenedores procesa los eventos enviados por el servidor. Sin embargo, es necesario ajustar el valor de tiempo de espera de solicitud para la puerta de enlace de aplicaciones para contenedores para evitar que las conexiones enviadas por el servidor agote el tiempo de espera.

En la API de puerta de enlace, RoutePolicy se debe definir un recurso con un routeTimeoutvalor de 0s.

apiVersion: alb.networking.azure.io/v1 
kind: RoutePolicy 
metadata: 
  name: route-policy-with-timeout 
  namespace: test-sse 
spec: 
  targetRef: 
    kind: HTTPRoute 
    name: query-param-matching 
    group: gateway.networking.k8s.io 
  default: 
    timeouts:  
      routeTimeout: 0s 

Nota:

El tiempo de espera de inactividad de Application Gateway for Containers está establecido actualmente en 5 minutos. Si la aplicación no envía ni recibe datos en este período, considere la posibilidad de enviar una solicitud de mantenimiento activo para evitar que la conexión se cierre. Puede implementarlo prefijando un mensaje con dos puntos : para actuar como comentario. Por ejemplo, puede enviar el mensaje siguiente como mantenerse activo: : keep-alive\n\n