7. Closing the Connection (Verbindung schließen)
7.1 Definitions (Definitionen)
7.1.1 Closing the WebSocket Connection (WebSocket-Verbindung schließen)
Das Schließen der WebSocket-Verbindung bedeutet das Schließen der zugrunde liegenden TCP-Verbindung.
7.1.2 Start the WebSocket Closing Handshake (WebSocket-Schließ-Handshake starten)
Senden eines Close-Kontroll-Frames, um den Schließ-Handshake zu initiieren.
7.1.3 The WebSocket Closing Handshake is Started (Der WebSocket-Schließ-Handshake ist gestartet)
Der Handshake beginnt, wenn ein Endpoint einen Close-Frame sendet.
7.1.4 The WebSocket Connection is Closed (Die WebSocket-Verbindung ist geschlossen)
Die Verbindung gilt als geschlossen, wenn die zugrunde liegende TCP-Verbindung geschlossen ist.
7.1.5 The WebSocket Connection Close Code (WebSocket-Verbindungs-Schließcode)
Der im Close-Frame enthaltene Statuscode.
7.1.6 The WebSocket Connection Close Reason (WebSocket-Verbindungs-Schließgrund)
Der optionale Textgrund im Close-Frame.
7.1.7 Fail the WebSocket Connection (WebSocket-Verbindung fehlschlagen lassen)
Die Verbindung aufgrund eines Fehlers sofort schließen, ohne einen Close-Frame zu senden.
7.2 Abnormal Closures (Abnormale Schließungen)
7.2.1 Client-Initiated Closure (Vom Client initiierte Schließung)
Wenn der Client einen Fehler erkennt, sollte er die Verbindung schließen.
7.2.2 Server-Initiated Closure (Vom Server initiierte Schließung)
Wenn der Server einen Fehler erkennt, sollte er die Verbindung schließen.
7.2.3 Recovering from Abnormal Closure (Wiederherstellung nach abnormaler Schließung)
Anwendungen sollten Wiederverbindungsmechanismen implementieren.
7.3 Normal Closure of Connections (Normale Schließung von Verbindungen)
Normaler Schließvorgang:
- Initiator sendet Close-Frame
- Empfänger sendet Close-Frame-Antwort nach Empfang des Close-Frames
- Empfänger schließt TCP-Verbindung
- Initiator schließt ebenfalls TCP-Verbindung nach Empfang des Close-Frames
// Client normale Schließung
ws.close(1000, 'Normal closure');
// Serverseitige Behandlung
ws.on('close', (code, reason) => {
console.log(`Verbindung geschlossen: ${code} - ${reason}`);
});
7.4 Status Codes (Statuscodes)
7.4.1 Defined Status Codes (Definierte Statuscodes)
| Code | Name | Beschreibung |
|---|---|---|
| 1000 | Normal Closure | Normale Schließung |
| 1001 | Going Away | Endpoint geht weg (z.B. Seitennavigation) |
| 1002 | Protocol Error | Protokollfehler |
| 1003 | Unsupported Data | Nicht unterstützter Datentyp |
| 1005 | No Status Rcvd | Reserviert, sollte nicht in Close-Frame verwendet werden |
| 1006 | Abnormal Closure | Reserviert, zeigt abnormale Verbindungsschließung an |
| 1007 | Invalid frame payload data | Ungültige Frame-Payload-Daten (z.B. ungültiges UTF-8) |
| 1008 | Policy Violation | Richtlinienverletzung |
| 1009 | Message Too Big | Nachricht zu groß |
| 1010 | Mandatory Ext. | Vom Client erwartete Erweiterung nicht ausgehandelt |
| 1011 | Internal Error | Interner Serverfehler |
| 1015 | TLS handshake | TLS-Handshake-Fehler (reserviert) |
7.4.2 Reserved Status Code Ranges (Reservierte Statuscode-Bereiche)
- 0-999: Nicht verwendet
- 1000-2999: Protokolldefiniert
- 3000-3999: Bibliothek/Framework-Verwendung
- 4000-4999: Anwendungsverwendung
Close-Frame-Struktur
+--------+--------+------------------+
| Status | Reason |
| Code | (optional) |
| (2 Bytes)| (UTF-8-Text) |
+--------+--------+------------------+
Referenzlinks
- Vorheriges Kapitel: 6. Sending and Receiving Data (Senden und Empfangen von Daten)
- Nächstes Kapitel: 8. Error Handling (Fehlerbehandlung)
- Detaillierte Erklärung: Schließprozess