Sobes.tech
Senior

Jak funguje připojení WebSocket v architektuře — v jakém okamžiku se navazuje a kdo komunikuje s kým?

sobes.tech AI

Odpověď od AI

Připojení WebSocket se navazuje prostřednictvím speciálního handshake nad protokolem HTTP:

  1. Klient odešle HTTP požadavek s hlavičkou Upgrade: websocket pro přechod na protokol WebSocket.
  2. Server podporující WebSocket odpoví potvrzením a přepne na obousměrné spojení.

Po navázání:

  • Klient i server udržují trvalé TCP spojení.
  • Obě strany mohou kdykoli posílat zprávy bez nutnosti znovu navazovat spojení.

V architektuře to umožňuje realizaci komunikace v reálném čase, například chat nebo aktualizace dat v reálném čase.

Příklad v Go s použitím balíčku 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("chyba upgradu:", err)
        return
    }
    defer conn.Close()

    for {
        _, msg, err := conn.ReadMessage()
        if err != nil {
            break
        }
        // Zpracování zprávy
        conn.WriteMessage(websocket.TextMessage, msg) // echo
    }
}

Tímto způsobem WebSocket zajišťuje obousměrné, trvalé spojení mezi klientem a serverem.