Senior
Чӣ тавр пайвасти WebSocket дар меъморӣ кор мекунад — кай он барпо мешавад ва кӣ бо кӣ муошират мекунад?
sobes.tech AI
Ҷавоб аз AI
WebSocket пайвастани тавассути handshake махсус дар болои протоколи HTTP барқарор мешавад:
- Клиент бо сарлавҳаи
Upgrade: websocketдархост HTTP мефиристад, то ба протоколи WebSocket гузарад. - Сервер, ки 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 таъмин мекунад, ки пайвастагии дуҷониба ва доимӣ байни муштарӣ ва сервер вуҷуд дорад.