7. Closing the Connection (Chiusura della connessione)
7.1 Definitions (Definizioni)
7.1.1 Closing the WebSocket Connection (Chiusura della connessione WebSocket)
Chiudere la connessione WebSocket significa chiudere la connessione TCP sottostante.
7.1.2 Start the WebSocket Closing Handshake (Avvio dell'handshake di chiusura WebSocket)
Inviare un frame di controllo Close per avviare l'handshake di chiusura.
7.1.3 The WebSocket Closing Handshake is Started (L'handshake di chiusura WebSocket è iniziato)
L'handshake inizia quando uno degli endpoint invia un frame Close.
7.1.4 The WebSocket Connection is Closed (La connessione WebSocket è chiusa)
La connessione è considerata chiusa quando la connessione TCP sottostante è chiusa.
7.1.5 The WebSocket Connection Close Code (Codice di chiusura della connessione WebSocket)
Il codice di stato incluso nel frame Close.
7.1.6 The WebSocket Connection Close Reason (Motivo di chiusura della connessione WebSocket)
Il motivo testuale opzionale nel frame Close.
7.1.7 Fail the WebSocket Connection (Fallimento della connessione WebSocket)
Chiudere immediatamente la connessione a causa di un errore, senza inviare un frame Close.
7.2 Abnormal Closures (Chiusure anomale)
7.2.1 Client-Initiated Closure (Chiusura avviata dal client)
Quando il client rileva un errore, dovrebbe chiudere la connessione.
7.2.2 Server-Initiated Closure (Chiusura avviata dal server)
Quando il server rileva un errore, dovrebbe chiudere la connessione.
7.2.3 Recovering from Abnormal Closure (Recupero da chiusura anomala)
Le applicazioni dovrebbero implementare meccanismi di riconnessione.
7.3 Normal Closure of Connections (Chiusura normale delle connessioni)
Processo di chiusura normale:
- L'iniziatore invia un frame Close
- Il ricevitore invia una risposta di frame Close dopo aver ricevuto il frame Close
- Il ricevitore chiude la connessione TCP
- L'iniziatore chiude anche la connessione TCP dopo aver ricevuto il frame Close
// Chiusura normale del client
ws.close(1000, 'Normal closure');
// Gestione lato server
ws.on('close', (code, reason) => {
console.log(`Connessione chiusa: ${code} - ${reason}`);
});
7.4 Status Codes (Codici di stato)
7.4.1 Defined Status Codes (Codici di stato definiti)
| Codice | Nome | Descrizione |
|---|---|---|
| 1000 | Normal Closure | Chiusura normale |
| 1001 | Going Away | Endpoint in partenza (ad es., navigazione di pagina) |
| 1002 | Protocol Error | Errore di protocollo |
| 1003 | Unsupported Data | Tipo di dati non supportato |
| 1005 | No Status Rcvd | Riservato, non dovrebbe essere usato nel frame Close |
| 1006 | Abnormal Closure | Riservato, indica chiusura di connessione anomala |
| 1007 | Invalid frame payload data | Dati di payload del frame non validi (ad es., UTF-8 non valido) |
| 1008 | Policy Violation | Violazione della policy |
| 1009 | Message Too Big | Messaggio troppo grande |
| 1010 | Mandatory Ext. | Estensione prevista dal client non negoziata |
| 1011 | Internal Error | Errore interno del server |
| 1015 | TLS handshake | Fallimento handshake TLS (riservato) |
7.4.2 Reserved Status Code Ranges (Intervalli di codici di stato riservati)
- 0-999: Non utilizzato
- 1000-2999: Definito dal protocollo
- 3000-3999: Uso libreria/framework
- 4000-4999: Uso applicazione
Struttura del frame Close
+--------+--------+------------------+
| Status | Reason |
| Code | (opzionale) |
| (2 byte)| (testo UTF-8) |
+--------+--------+------------------+
Link di riferimento
- Capitolo precedente: 6. Sending and Receiving Data (Invio e ricezione di dati)
- Capitolo successivo: 8. Error Handling (Gestione degli errori)
- Spiegazione dettagliata: Processo di chiusura