Sobes.tech
Senior

Чӣ тавр пайвасти WebSocket дар меъморӣ кор мекунад — кай он барпо мешавад ва кӣ бо кӣ муошират мекунад?

sobes.tech AI

Ҷавоб аз AI

WebSocket пайвастани тавассути handshake махсус дар болои протоколи HTTP барқарор мешавад:

  1. Клиент бо сарлавҳаи Upgrade: websocket дархост HTTP мефиристад, то ба протоколи WebSocket гузарад.
  2. Сервер, ки WebSocket-ро дастгирӣ мекунад, бо тасдиқ ҷавоб медиҳад ва ба пайвастагии дуҷониба мегузарад.

Пас аз барқароршавӣ:

  • Клиент ва сервер пайвастагии TCP-и доимӣ нигоҳ медоранд.
  • Ҳарду ҷониб метавонанд дар ҳар лаҳза паём фиристанд, бе ниёз ба барқарорсозии нав.

Дар меъморӣ, ин имкон медиҳад, ки муоширати дар вақти воқеӣ амалӣ карда шавад, масалан, чат ё навсозии маълумот дар вақти воқеӣ.

Масалан дар Go бо истифода аз бастаи 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("хати такмил:", err)
        return
    }
    defer conn.Close()

    for {
        _, msg, err := conn.ReadMessage()
        if err != nil {
            break
        }
        // Коркарди паём
        conn.WriteMessage(websocket.TextMessage, msg) // эхо
    }
}

Инчунин, WebSocket таъмин мекунад, ки пайвастагии дуҷониба ва доимӣ байни муштарӣ ва сервер вуҷуд дорад.