Aller au contenu principal

7. Closing the Connection (Fermeture de la connexion)

7.1 Definitions (Définitions)

7.1.1 Closing the WebSocket Connection (Fermeture de la connexion WebSocket)

Fermer la connexion WebSocket signifie fermer la connexion TCP sous-jacente.

7.1.2 Start the WebSocket Closing Handshake (Démarrage de la poignée de main de fermeture WebSocket)

Envoyer une trame de contrôle Close pour initier la poignée de main de fermeture.

7.1.3 The WebSocket Closing Handshake is Started (La poignée de main de fermeture WebSocket est démarrée)

La poignée de main commence lorsque l'un des endpoints envoie une trame Close.

7.1.4 The WebSocket Connection is Closed (La connexion WebSocket est fermée)

La connexion est considérée comme fermée lorsque la connexion TCP sous-jacente est fermée.

7.1.5 The WebSocket Connection Close Code (Code de fermeture de connexion WebSocket)

Le code d'état inclus dans la trame Close.

7.1.6 The WebSocket Connection Close Reason (Raison de fermeture de connexion WebSocket)

La raison textuelle optionnelle dans la trame Close.

7.1.7 Fail the WebSocket Connection (Échec de la connexion WebSocket)

Fermer immédiatement la connexion en raison d'une erreur, sans envoyer de trame Close.

7.2 Abnormal Closures (Fermetures anormales)

7.2.1 Client-Initiated Closure (Fermeture initiée par le client)

Lorsque le client détecte une erreur, il devrait fermer la connexion.

7.2.2 Server-Initiated Closure (Fermeture initiée par le serveur)

Lorsque le serveur détecte une erreur, il devrait fermer la connexion.

7.2.3 Recovering from Abnormal Closure (Récupération après une fermeture anormale)

Les applications devraient implémenter des mécanismes de reconnexion.

7.3 Normal Closure of Connections (Fermeture normale des connexions)

Processus de fermeture normale :

  1. L'initiateur envoie une trame Close
  2. Le récepteur envoie une réponse de trame Close après avoir reçu la trame Close
  3. Le récepteur ferme la connexion TCP
  4. L'initiateur ferme également la connexion TCP après avoir reçu la trame Close
// Fermeture normale du client
ws.close(1000, 'Normal closure');

// Gestion côté serveur
ws.on('close', (code, reason) => {
console.log(`Connexion fermée: ${code} - ${reason}`);
});

7.4 Status Codes (Codes d'état)

7.4.1 Defined Status Codes (Codes d'état définis)

CodeNomDescription
1000Normal ClosureFermeture normale
1001Going AwayEndpoint partant (par exemple, navigation de page)
1002Protocol ErrorErreur de protocole
1003Unsupported DataType de données non supporté
1005No Status RcvdRéservé, ne doit pas être utilisé dans une trame Close
1006Abnormal ClosureRéservé, indique une fermeture de connexion anormale
1007Invalid frame payload dataDonnées de charge utile de trame invalides (par exemple, UTF-8 invalide)
1008Policy ViolationViolation de politique
1009Message Too BigMessage trop volumineux
1010Mandatory Ext.Extension attendue par le client non négociée
1011Internal ErrorErreur interne du serveur
1015TLS handshakeÉchec de la poignée de main TLS (réservé)

7.4.2 Reserved Status Code Ranges (Plages de codes d'état réservées)

  • 0-999 : Non utilisé
  • 1000-2999 : Défini par le protocole
  • 3000-3999 : Utilisation bibliothèque/framework
  • 4000-4999 : Utilisation application

Structure de trame Close

+--------+--------+------------------+
| Status | Reason |
| Code | (optionnel) |
| (2 octets)| (texte UTF-8) |
+--------+--------+------------------+

Liens de référence