Что такое WebSocket?

Middle
1.1k просмотров
AFK Offer AI

WebSocket — протокол полнодуплексной связи поверх TCP. В отличие от HTTP, соединение остаётся открытым и обе стороны могут слать сообщения в любой момент. Идеален для чатов, уведомлений, real-time дашбордов.

// gorilla/websocket
func handler(w http.ResponseWriter, r *http.Request) {
    conn, _ := upgrader.Upgrade(w, r, nil)
    defer conn.Close()
    for {
        _, msg, _ := conn.ReadMessage()
        conn.WriteMessage(websocket.TextMessage, msg)
    }
}

Начинается как обычный HTTP-запрос с заголовком Upgrade: websocket, затем переключается на WebSocket-протокол. В Go популярные библиотеки: gorilla/websocket и nhooyr/websocket. Каждое соединение обычно обслуживается отдельной горутиной — Go отлично подходит для тысяч одновременных WebSocket-коннектов.

Следующий вопрос

Что такое load balancer?