Pourquoi une connexion via WebSocket se ferme-t-elle après 60 secondes ?
Cloud privé virtuel Infrastructure classique
Votre service Ingress expose une application qui utilise WebSocket. Cependant, la connexion entre un client et votre application WebSocket s'interrompt lorsqu'aucun trafic n'est échangé entre eux durant 60 secondes.
La connexion à votre application WebSocket peut être abandonnée au bout de 60 secondes d'inactivité pour l'une des raisons suivantes :
- Votre connexion Internet a un proxy ou un pare-feu qui ne tolère pas les connexions longues.
- Une expiration de délai dans l'équilibreur de charge d'application pour l'application WebSocket met fin à la connexion.
Pour empêcher l'interruption de la connexion au bout de 60 secondes d'inactivité :
-
Si vous vous connectez à votre application WebSocket via un proxy ou un pare-feu, veillez à ce que ce proxy ou ce pare-feu ne soit pas configuré pour mettre fin automatiquement aux connexions longues.
-
Pour maintenir la connexion, vous pouvez augmenter la valeur du délai d'expiration ou définir un signal de présence dans votre application.
- Modifier le délai d'expiration : augmentez la valeur du paramètre
proxy-read-timeoutdans la configuration de votre équilibreur de charge d'application. Par exemple, pour remplacer le délai de60spar une valeur supérieure, telle que300s, ajoutez cette annotation au fichier de la ressource Ingress :nginx.ingress.kubernetes.io/proxy-read-timeout: 300. Le délai est modifié pour tous les équilibreurs de charge d'application publics figurant dans votre cluster. - Configurer un signal de présence : si vous n'envisagez pas de modifier la valeur du délai de lecture par défaut de l'équilibreur de charge d'application, configurez un signal de présence dans votre application WebSocket.
Lorsque vous mettez en place un protocole de battement de cœur en utilisant un cadre comme WAMP, le serveur en amont de l'application envoie périodiquement un message
pingà intervalles réguliers et le client répond par un messagepong. Définissez l'intervalle de battement de cœur à 58 secondes ou moins afin que le traficping/pongmaintienne la connexion ouverte avant que le délai de 60 secondes ne soit appliqué.
- Modifier le délai d'expiration : augmentez la valeur du paramètre