Por que uma conexão por meio do WebSocket é fechada após 60 segundos?
Nuvem privada virtual Infraestrutura clássica
Seu serviço Ingresso expõe um app que usa um WebSocket. No entanto, a conexão entre um cliente e o app WebSocket é fechada quando nenhum tráfego é enviado entre eles por 60 segundos.
A conexão com seu app WebSocket pode cair após 60 segundos de inatividade por um dos motivos a seguir:
- A sua conexão de Internet tem um proxy ou firewall que não tolera conexões longas.
- Um tempo limite no ALB para o app WebSocket finaliza a conexão.
Para evitar que a conexão seja fechada após 60 segundos de inatividade:
-
Se você se conectar ao seu app WebSocket por meio de um proxy ou firewall, certifique-se de que o proxy ou o firewall não esteja configurado para finalizar automaticamente as conexões longas.
-
Para manter a conexão ativa, é possível aumentar o valor do tempo limite ou configurar uma pulsação em seu app.
- Mude o tempo limite: aumente o valor do
proxy-read-timeoutem sua configuração do ALB. Por exemplo, para mudar o tempo limite de60spara um valor maior como300s, inclua esta anotação em seu arquivo de recursos do Ingress:nginx.ingress.kubernetes.io/proxy-read-timeout: 300. O tempo limite é mudado para todos os ALBs públicos em seu cluster. - Configure uma pulsação: se você não quiser mudar o valor de tempo limite de leitura padrão do ALB, configure uma pulsação em seu app WebSocket. Quando você configura um protocolo de heartbeat usando uma estrutura como o
WAMP, o servidor upstream do aplicativo envia periodicamente uma mensagem
pingem um intervalo de tempo e o cliente responde com uma mensagempong. Defina o intervalo de heartbeat para 58 segundos ou menos para que o tráfegoping/pongmantenha a conexão aberta antes que o tempo limite de 60 segundos seja aplicado.
- Mude o tempo limite: aumente o valor do