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 :
- L'initiateur envoie une trame Close
- Le récepteur envoie une réponse de trame Close après avoir reçu la trame Close
- Le récepteur ferme la connexion TCP
- 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)
| Code | Nom | Description |
|---|---|---|
| 1000 | Normal Closure | Fermeture normale |
| 1001 | Going Away | Endpoint partant (par exemple, navigation de page) |
| 1002 | Protocol Error | Erreur de protocole |
| 1003 | Unsupported Data | Type de données non supporté |
| 1005 | No Status Rcvd | Réservé, ne doit pas être utilisé dans une trame Close |
| 1006 | Abnormal Closure | Réservé, indique une fermeture de connexion anormale |
| 1007 | Invalid frame payload data | Données de charge utile de trame invalides (par exemple, UTF-8 invalide) |
| 1008 | Policy Violation | Violation de politique |
| 1009 | Message Too Big | Message trop volumineux |
| 1010 | Mandatory Ext. | Extension attendue par le client non négociée |
| 1011 | Internal Error | Erreur interne du serveur |
| 1015 | TLS 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
- Chapitre précédent : 6. Sending and Receiving Data (Envoi et réception de données)
- Chapitre suivant : 8. Error Handling (Gestion des erreurs)
- Explication détaillée : Processus de fermeture