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

  1. Clientul trimite o solicitare HTTP cu antetul Upgrade: websocket pentru a trece la protocolul WebSocket.
  2. 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.