Sobes.tech
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:

  1. Il client invia una richiesta HTTP con l'intestazione Upgrade: websocket per passare al protocollo WebSocket.
  2. 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.