IBM Cloud Docs
¿Por qué se cierra una conexión a través de WebSocket después de 60 segundos?

¿Por qué se cierra una conexión a través de WebSocket después de 60 segundos?

Virtual Private Cloud Infraestructura clásica

El servicio Ingress expone una app que utiliza un WebSocket. Sin embargo, la conexión entre un cliente y la app de WebSocket se cierra cuando no se envía tráfico entre ellos durante 60 segundos.

La conexión a la app de WebSocket se puede eliminar después de 60 segundos de inactividad por una de las siguientes razones:

  • La conexión de Internet tiene un proxy o un cortafuegos que no tolera las conexiones largas.
  • Un tiempo de espera excedido en el ALB a la app de WebSocket termina la conexión.

Para evitar que la conexión se cierre después de 60 segundos de inactividad:

  1. Si se conecta a la app de WebSocket a través de un proxy o un cortafuegos, asegúrese de que el proxy o el cortafuegos no estén configurados para terminar automáticamente las conexiones largas.

  2. Para mantener la conexión activa, puede aumentar el valor del tiempo de espera o configurar un latido en la app.

    • Cambie el tiempo de espera excedido: aumente el valor de proxy-read-timeout en la configuración del ALB. Por ejemplo, para cambiar el tiempo de espera excedido de 60s a un valor mayor como 300s, añada esta anotación al archivo de recursos de Ingress: nginx.ingress.kubernetes.io/proxy-read-timeout: 300. El tiempo de espera se cambia para todos los ALB públicos del clúster.
    • Configure un valor de latido: si no desea cambiar el valor de tiempo de espera excedido de lectura predeterminado del ALB, configure un valor de latido en la app WebSocket. Cuando configura un protocolo de latido utilizando una infraestructura como WAMP, el servidor en sentido ascendente de la aplicación envía periódicamente un mensaje ping en un intervalo de tiempo y el cliente responde con un mensaje pong. Establezca el intervalo de pulsaciones en 58 segundos o menos para que el tráfico de ping/pong mantenga abierta la conexión antes de que se aplique el tiempo de espera de 60 segundos.