Senior
Как работи WebSocket връзката в архитектурата — в кой момент се установява и кой с кого комуникира?
sobes.tech AI
Отговор от AI
WebSocket връзката се установява чрез специален handshake върху протокола HTTP:
- Клиентът изпраща HTTP заявка с хедър
Upgrade: websocket, за да премине към протокола 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 осигурява двупосочно, постоянно свързване между клиента и сървъра.