Sobes.tech
Senior

Как работи WebSocket връзката в архитектурата — в кой момент се установява и кой с кого комуникира?

sobes.tech AI

Отговор от AI

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

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