Sobes.tech
Senior

Kaip veikia WebSocket ryšys architektūroje — kada jis nustatomas ir kas su kuo bendrauja?

sobes.tech AI

Atsakymas iš AI

WebSocket ryšys yra nustatomas per specialų handshake virš HTTP protokolo:

  1. Klientas siunčia HTTP užklausą su antrašte Upgrade: websocket, kad pereitų prie WebSocket protokolo.
  2. Serveris, kuris palaiko WebSocket, atsako patvirtinimu ir pereina į dvikryptį ryšį.

Po įrengimo:

  • Klientas ir serveris palaiko nuolatinį TCP ryšį.
  • Abi šalys gali bet kada siųsti žinutes be poreikio vėl nustatyti ryšį.

Architektūroje tai leidžia įgyvendinti realaus laiko komunikaciją, pvz., pokalbius ar duomenų atnaujinimus realiu laiku.

Pavyzdys Go kalba naudojant gorilla/websocket paketą:

var upgrader = websocket.Upgrader{}

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

    for {
        _, msg, err := conn.ReadMessage()
        if err != nil {
            break
        }
        // Žinutės apdorojimas
        conn.WriteMessage(websocket.TextMessage, msg) // atspindys
    }
}

Taip WebSocket užtikrina dvipusį, nuolatinį ryšį tarp kliento ir serverio.