Senior
Cum funcționează conexiunea WebSocket în arhitectură — în ce moment se stabilește și cine comunică cu cine?
sobes.tech AI
Răspuns de la AI
Conexiunea WebSocket se stabilește printr-un handshake special peste protocolul HTTP:
- Clientul trimite o solicitare HTTP cu antetul
Upgrade: websocketpentru a trece la protocolul WebSocket. - Serverul, care suportă WebSocket, răspunde cu o confirmare și trece la o conexiune bidirecțională.
După stabilire:
- Clientul și serverul mențin o conexiune TCP permanentă.
- Ambele părți pot trimite mesaje în orice moment fără a fi nevoie să refacă conexiunea.
În arhitectură, acest lucru permite implementarea comunicației în timp real, de exemplu, chat sau actualizare de date în timp real.
Exemplu în Go folosind pachetul 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("eroare de upgrade:", err)
return
}
defer conn.Close()
for {
_, msg, err := conn.ReadMessage()
if err != nil {
break
}
// Procesare mesaj
conn.WriteMessage(websocket.TextMessage, msg) // ecou
}
}
Astfel, WebSocket asigură o conexiune bidirecțională și permanentă între client și server.