1. Cos'è il Protocollo WebSocket
Il protocollo WebSocket (standardizzato in RFC 6455) consente un canale di comunicazione bidirezionale persistente (Full-Duplex) su una singola connessione TCP tra un client (es. browser) e un server. A differenza del classico modello HTTP request-response, con WebSocket entrambe le parti possono inviare dati in qualsiasi momento senza dover riaprire la connessione.
1. Bassa Latenza: Nessun overhead di intestazioni HTTP ripetitive per ogni singola transazione.
2. Real-Time Reale: Il server può spingere (push) dati al client all'istante senza che quest'ultimo debba interrogare periodicamente il server (polling).
2. L'Handshake Iniziale
Nonostante la comunicazione successiva avvenga su socket dedicati, la connessione WebSocket parte sempre come una normale richiesta HTTP di upgrade:
| Fase | Descrizione e Intestazioni HTTP |
|---|---|
| Richiesta Client (Handshake) | Il client invia una GET con intestazioni specifiche:Upgrade: websocketConnection: UpgradeSec-WebSocket-Key: [token casuale]
|
| Risposta Server (Accettazione) | Il server risponde confermando il cambio protocollo con codice 101 Switching Protocols:HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: Upgrade
|
3. WebSocket vs HTTP (Polling)
Per comprendere l'efficacia dei WebSocket, confrontiamoli con le tecniche tradizionali:
4. Simulatore Interattivo: Chat in Real-Time via WebSocket
Simula l'apertura di un canale WebSocket, l'invio di messaggi testuali e la ricezione immediata di risposte asincrone dal server.