Sobes.tech
Senior

Kuidas töötab WebSocket-ühendus arhitektuuris — millal see luuakse ja kes kellega suhtleb?

sobes.tech AI

Vastus AI-lt

WebSocket ühendus luuakse spetsiaalse handshake'i kaudu HTTP-protokolli peal:

  1. Klient saadab HTTP-päringu päisega Upgrade: websocket, et üle minna WebSocket-protokollile.
  2. Server, mis toetab WebSocketit, vastab kinnitusega ja üleminekuga kahepoolsele ühendusele.

Pärast ühenduse loomist:

  • Klient ja server hoiavad püsivat TCP-ühendust.
  • Mõlemad pooled saavad igal ajal saata sõnumeid ilma ühendust uuesti loamata.

Seda arhitektuuri kasutades on võimalik teostada reaalajas suhtlust, näiteks vestlust või andmete reaalajas uuendamist.

Näide Go keeles kasutades gorilla/websocket paketti:

var upgrader = websocket.Upgrader{}

func wsHandler(w http.ResponseWriter, r *http.Request) {
    conn, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        log.Print("ülemineku viga:", err)
        return
    }
    defer conn.Close()

    for {
        _, msg, err := conn.ReadMessage()
        if err != nil {
            break
        }
        // Sõnumi töötlemine
        conn.WriteMessage(websocket.TextMessage, msg) // peegeldus
    }
}

Sel viisil tagab WebSocket kahepoolse, püsiva ühenduse kliendi ja serveri vahel.