Senior
Jak działa połączenie WebSocket w architekturze — w którym momencie jest ono ustanawiane i kto z kim się komunikuje?
sobes.tech AI
Odpowiedź od AI
Połączenie WebSocket jest ustanawiane za pomocą specjalnego uścisku dłoni nad protokołem HTTP:
- Klient wysyła żądanie HTTP z nagłówkiem
Upgrade: websocket, aby przejść na protokół WebSocket. - Serwer obsługujący WebSocket odpowiada potwierdzeniem i przełącza się na dwukierunkowe połączenie.
Po ustanowieniu:
- Klient i serwer utrzymują stałe połączenie TCP.
- Obie strony mogą w dowolnym momencie wysyłać wiadomości bez konieczności ponownego ustanawiania połączenia.
W architekturze umożliwia to realizację komunikacji w czasie rzeczywistym, np. czatu lub aktualizacji danych w czasie rzeczywistym.
Przykład w Go z użyciem pakietu 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("błąd upgradowania:", err)
return
}
defer conn.Close()
for {
_, msg, err := conn.ReadMessage()
if err != nil {
break
}
// Przetwarzanie wiadomości
conn.WriteMessage(websocket.TextMessage, msg) // echo
}
}
W ten sposób WebSocket zapewnia dwukierunkowe, stałe połączenie między klientem a serwerem.