Sobes.tech
Back to questions
Senior
4

Как работает WebSocket соединение в архитектуре — в какой момент оно устанавливается и кто с кем общается?

Companies where asked
Яндекс

Answer from AI

sobes.tech AI

WebSocket соединение устанавливается через специальный handshake поверх HTTP протокола:

  1. Клиент отправляет HTTP-запрос с заголовком Upgrade: websocket для перехода на протокол WebSocket.
  2. Сервер, поддерживающий 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 обеспечивает двунаправленное, постоянное соединение между клиентом и сервером.