Sobes.tech
Senior

Kā darbojas WebSocket savienojums arhitektūrā — kad tas tiek izveidots un ar ko kas sazinās?

sobes.tech AI

Atbilde no AI

WebSocket savienojums tiek ar uzsākts, izmantojot īpašu handshake pār HTTP protokolu:

  1. Klients nosūta HTTP pieprasījumu ar galveni Upgrade: websocket, lai pārietu uz WebSocket protokolu.
  2. Serveris, kas atbalsta WebSocket, atbild ar apstiprinājumu un pārslēdzas uz divvirzienu savienojumu.

Pēc uzstādīšanas:

  • Klients un serveris uztur pastāvīgu TCP savienojumu.
  • Abi var jebkurā laikā sūtīt ziņojumus, nav nepieciešams atkārtoti izveidot savienojumu.

Šāda arhitektūra ļauj īstenot reāllaika komunikāciju, piemēram, čatu vai datu atjauninājumus reāllaikā.

Piemērs Go valodā ar gorilla/websocket paketi:

var upgrader = websocket.Upgrader{}

func wsHandler(w http.ResponseWriter, r *http.Request) {
    conn, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        log.Print("upgrade kļūda:", err)
        return
    }
    defer conn.Close()

    for {
        _, msg, err := conn.ReadMessage()
        if err != nil {
            break
        }
        // Ziņojuma apstrāde
        conn.WriteMessage(websocket.TextMessage, msg) // atbilde
    }
}

Tādējādi WebSocket nodrošina divvirzienu, pastāvīgu savienojumu starp klientu un serveri.