Sobes.tech
Senior

Kako funkcioniše WebSocket veza u arhitekturi — u kom trenutku se uspostavlja i ko sa kim komunicira?

sobes.tech АИ

Одговор од АИ

WebSocket veza uspostavlja se putem posebnog handshake-a preko HTTP protokola:

  1. Klijent šalje HTTP zahtev sa zaglavljem Upgrade: websocket da bi prešao na WebSocket protokol.
  2. Server koji podržava WebSocket odgovara potvrdom i prelazi na dvosmernu konekciju.

Nakon uspostavljanja:

  • Klijent i server održavaju trajnu TCP konekciju.
  • Obje strane mogu u bilo kom trenutku slati poruke bez potrebe za ponovnim uspostavljanjem veze.

U arhitekturi, ovo omogućava implementaciju komunikacije u realnom vremenu, na primer, chat ili ažuriranje podataka u realnom vremenu.

Primer u Go jeziku koristeći paket 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("greška pri nadogradnji:", err)
        return
    }
    defer conn.Close()

    for {
        _, msg, err := conn.ReadMessage()
        if err != nil {
            break
        }
        // Obrada poruke
        conn.WriteMessage(websocket.TextMessage, msg) // odraz
    }
}

Na ovaj način, WebSocket obezbeđuje dvosmernu, trajnu vezu između klijenta i servera.