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:
- Klient odešle HTTP požadavek s hlavičkou
Upgrade: websocketpro přechod na protokol WebSocket. - 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.