Zum Hauptinhalt springen

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:

  1. Initiator sendet Close-Frame
  2. Empfänger sendet Close-Frame-Antwort nach Empfang des Close-Frames
  3. Empfänger schließt TCP-Verbindung
  4. 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)​

CodeNameBeschreibung
1000Normal ClosureNormale Schließung
1001Going AwayEndpoint geht weg (z.B. Seitennavigation)
1002Protocol ErrorProtokollfehler
1003Unsupported DataNicht unterstützter Datentyp
1005No Status RcvdReserviert, sollte nicht in Close-Frame verwendet werden
1006Abnormal ClosureReserviert, zeigt abnormale Verbindungsschließung an
1007Invalid frame payload dataUngültige Frame-Payload-Daten (z.B. ungültiges UTF-8)
1008Policy ViolationRichtlinienverletzung
1009Message Too BigNachricht zu groß
1010Mandatory Ext.Vom Client erwartete Erweiterung nicht ausgehandelt
1011Internal ErrorInterner Serverfehler
1015TLS handshakeTLS-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) |
+--------+--------+------------------+