Назад к вопросам
Senior
3
Как работает WebSocket соединение в архитектуре — в какой момент оно устанавливается и кто с кем общается?
Компании, где спрашивали
Яндекс
Ответ от нейросети
sobes.tech AI
WebSocket соединение устанавливается через специальный handshake поверх HTTP протокола:
- Клиент отправляет HTTP-запрос с заголовком
Upgrade: websocketдля перехода на протокол WebSocket. - Сервер, поддерживающий WebSocket, отвечает подтверждением и переключается на двунаправленное соединение.
После установки:
- Клиент и сервер поддерживают постоянное TCP-соединение.
- Обе стороны могут в любой момент отправлять сообщения без необходимости повторного установления соединения.
В архитектуре это позволяет реализовать real-time коммуникацию, например, чат или обновление данных в реальном времени.
Пример на 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("upgrade error:", err)
return
}
defer conn.Close()
for {
_, msg, err := conn.ReadMessage()
if err != nil {
break
}
// Обработка сообщения
conn.WriteMessage(websocket.TextMessage, msg) // эхо
}
}
Таким образом, WebSocket обеспечивает двунаправленное, постоянное соединение между клиентом и сервером.