Senior
WebSocket байланышы архитектурада кандай иштейт — кай орнотулат жана ким ким менен байланышта болот?
sobes.tech AI
AIден жооп
WebSocket байланышы HTTP протоколу үстүндө атайын handshake аркылуу түзүлөт:
- Клиент
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 клиент жана сервер ортосунда эки тараптуу, туруктуу байланыш камсыздайт.