Une socket TCP vivante, un pair WebSocket qui répond et une progression applicative utile sont des observations différentes :

PreuveCe qu'elle établit
Vivacité au niveau TCPLe chemin de transport vérifié répond à ce niveau
Un WebSocket Pong correspondantLe pair a répondu à cette trame de contrôle
Un accusé de l'applicationL'application a confirmé une opération selon son propre protocole

Un proxy direct maintient généralement des connexions distinctes vers le client et vers la destination. Le pair TCP du client est le proxy, tandis qu'un Ping à l'intérieur d'un tunnel établi voyage jusqu'au point de terminaison WebSocket.

Un Pong correspondant

Le protocole exige qu'un Pong de réponse porte les données applicatives du Ping. Servez-vous de cette correspondance pour identifier une sonde en attente. Un Pong non sollicité est autorisé, mais ne demande aucun accusé ; en envoyer un après chaque message de données fournit une preuve différente.

Préférez le mécanisme de battement de cœur pris en charge par la bibliothèque. Le JavaScript du navigateur a plutôt besoin d'un contrat de battement de cœur au niveau applicatif. Choisissez les intervalles et les seuils d'échec selon la charge et la politique réseau. Des pauses d'ordonnancement ou une boucle d'événements surchargée peuvent manquer un seuil agressif sans établir une panne du réseau.

Maintenez le récepteur en marche

Le client a besoin d'entrées-sorties continues pour recevoir et traiter les trames de contrôle. Bloquer ce mécanisme peut faire apparaître une pénurie locale comme une panne.

Ping génère du trafic de tunnel, mais chaque intermédiaire décide de ce qui satisfait sa politique d'inactivité. Aucun battement de cœur ne garantit une protection contre une limite absolue de durée de vie de la connexion.

Un pair peut répondre à Ping alors que son application cesse de produire des mises à jour, et un abonnement silencieux peut être sain. Suivez séparément le dernier Pong valide et l'événement applicatif significatif lorsque les deux comptent. En cas d'échec, conservez la route, les temps écoulés et la sonde en attente, puis fermez ou rétablissez via le cycle de vie pris en charge.

Articles similaires