Протокол по HTTP Upgrade. В стандартной библиотеке нет готового WebSocket; используют gorilla/websocket или nhooyr.io/websocket. После Upgrade получают Conn; чтение и запись в цикле (ReadMessage, WriteMessage). Важно: обрабатывать закрытие и таймауты, ограничивать размер сообщения. Для масштабирования - sticky session на балансировщике или pub/sub между инстансами.
upgrader := websocket.Upgrader{}
conn, _ := upgrader.Upgrade(w, r, nil)
defer conn.Close()
for { _, msg, err := conn.ReadMessage(); ... }