Senior
Come funziona la connessione WebSocket nell'architettura — in quale momento viene stabilita e chi comunica con chi?
sobes.tech AI
Risposta dell'AI
La connessione WebSocket viene stabilita tramite un handshake speciale sul protocollo HTTP:
- Il client invia una richiesta HTTP con l'intestazione
Upgrade: websocketper passare al protocollo WebSocket. - Il server, che supporta WebSocket, risponde con una conferma e passa a una connessione bidirezionale.
Dopo l'installazione:
- Il client e il server mantengono una connessione TCP persistente.
- Entrambe le parti possono inviare messaggi in qualsiasi momento senza dover ristabilire la connessione.
In architettura, ciò consente di implementare comunicazioni in tempo reale, ad esempio chat o aggiornamenti dati in tempo reale.
Esempio in Go usando il pacchetto gorilla/websocket:
var upgrader = websocket.Upgrader{}
func wsHandler(w http.ResponseWriter, r *http.Request) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Print("errore di upgrade:", err)
return
}
defer conn.Close()
for {
_, msg, err := conn.ReadMessage()
if err != nil {
break
}
// Elaborazione del messaggio
conn.WriteMessage(websocket.TextMessage, msg) // eco
}
}
In questo modo, WebSocket garantisce una connessione bidirezionale e persistente tra client e server.