Quando HTTP non basta
Perché le app in tempo reale hanno bisogno di connessioni diverse
⏱ Stima ~7 min
01 · Leggi
Hai costruito un server che risponde alle richieste. Il browser chiede una pagina, il server la invia. Un form manda dati, il server li elabora. Questo ciclo richiesta-risposta è il modo in cui funziona gran parte del web.
Ma cosa succede se è il server a voler parlare con te per primo, senza che tu abbia chiesto nulla?
L'avversario agli scacchi ha mosso un pezzo. È arrivato un messaggio in chat. Il prezzo di un'azione è cambiato. Con HTTP normale, il server non può agire per primo — deve aspettare che tu faccia una richiesta. Questo è un problema ogni volta che si costruisce qualcosa in tempo reale.
💡 Immagina cosìHTTP è come scambiarsi lettere. Scrivi, spedisci, aspetti la risposta. Funziona, ma ogni volta c'è un ritardo. WebSocket è come una telefonata — una volta aperta la connessione, entrambe le parti possono parlare quando vogliono. Niente più attese.
Punti chiave
- HTTP è richiesta-risposta: il client fa sempre il primo passo
- Con HTTP il server non può mai inviare dati al client di propria iniziativa
- Funzioni in tempo reale come giochi, chat e aggiornamenti live richiedono qualcosa di diverso
- WebSocket risolve il problema con una connessione persistente e bidirezionale
02 · Leggi
Prima che esistesse WebSocket, gli sviluppatori cercavano di simulare le funzioni in tempo reale con una tecnica chiamata polling. Il browser chiedeva al server ogni uno o due secondi: "Ci sono aggiornamenti?" Se c'era qualcosa di nuovo il server lo inviava, altrimenti rispondeva vuoto.
Il polling funziona tecnicamente. Ma è uno spreco. Immagina di chiamare la pizzeria ogni 30 secondi per chiedere: "Il mio ordine è pronto?" La maggior parte delle volte la risposta è no, e stai sprecando tempo tuo e loro.
WebSocket sostituisce questo hack con una vera soluzione: una connessione persistente in cui entrambe le parti possono inviare messaggi quando vogliono, senza dover chiedere.
Punti chiave
- Polling: il client chiede ogni tot secondi "Ci sono aggiornamenti?" — uno spreco
- La maggior parte delle risposte al poll è vuota — banda e carico del server sprecati
- WebSocket: una connessione aperta, entrambe le parti inviano liberamente
- Ogni app in tempo reale importante usa WebSocket: Slack, Discord, Google Docs, giochi multiplayer
03 · Passo dopo passo
Ecco come si stabilisce una connessione WebSocket — partendo da una normale richiesta HTTP che viene poi aggiornata.
1. Il client invia una richiesta HTTP
Il browser invia una normale richiesta HTTP al server, ma include un header speciale: 'Upgrade: websocket'. Questo dice al server: "Voglio passare da HTTP a WebSocket."
2. Il server accetta l'upgrade
Se il server supporta WebSocket, risponde con il codice di stato 101 (Switching Protocols). La connessione HTTP è ora aggiornata a una connessione WebSocket.
3. La connessione persistente è aperta
Da questo momento entrambe le parti possono inviare messaggi quando vogliono. Il server può spingere dati al client senza aspettare una richiesta. Il client può inviare dati al server senza aspettare una risposta.
4. I messaggi scorrono liberamente
Entrambe le parti inviano piccoli pacchetti di dati chiamati 'frame'. Non c'è nessun modello richiesta-risposta — solo messaggi che vanno e vengono secondo necessità. È così che la mossa agli scacchi appare immediatamente sullo schermo dell'avversario.
5. La connessione si chiude quando si ha finito
Entrambe le parti possono chiudere la connessione in qualsiasi momento. Il browser la chiude quando esci dalla pagina. Il server la chiude quando ti disconnetti. Nel frattempo rimane aperta.
04 · Trascina per ordinare
Classifica ogni funzione: usa HTTP o WebSocket?
(Questa sezione è interattiva — attiva JavaScript per usarla.)
05 · Quiz
Qual è il vantaggio principale di WebSocket rispetto a HTTP per i giochi multiplayer?
- Il server può inviare aggiornamenti ai giocatori immediatamente, senza che questi debbano chiederli
- WebSocket è più sicuro di HTTP
- WebSocket usa meno banda per il caricamento iniziale della pagina
- WebSocket non richiede nessun server
06 · Completa
A differenza del ciclo richiesta-risposta di HTTP, WebSocket crea una connessione _____, in cui entrambe le parti possono inviare messaggi in qualsiasi momento.
Altre lezioni di questo capitolo
⚠ L'esperienza interattiva completa richiede JavaScript. Attivalo e ricarica la pagina.
※ Questo è un progetto educativo indipendente — non è un prodotto ufficiale di Anthropic. Claude™ è un marchio di Anthropic, PBC.