Ответ
В Go популярны следующие технологии для real-time событий:
- WebSockets - нативный пакет
golang.org/x/net/websocketили библиотеки:gorilla/websocket(наиболее популярная)nhooyr.io/websocket(легковесная)
// Пример с gorilla/websocket
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Println("Upgrade error:", err)
return
}
defer conn.Close()
for {
_, msg, err := conn.ReadMessage()
if err != nil {
break
}
conn.WriteMessage(websocket.TextMessage, msg)
}
- SSE (Server-Sent Events) - через стандартный
net/http:
w.Header().Set("Content-Type", "text/event-stream")
for {
fmt.Fprintf(w, "data: %snn", time.Now().String())
w.(http.Flusher).Flush()
time.Sleep(1 * time.Second)
}
-
gRPC streaming - двунаправленные потоки через
google.golang.org/grpc -
NATS, Redis Pub/Sub - для распределенных систем
-
MQTT (через
eclipse/paho.mqtt.golang) - для IoT сценариев
Выбор зависит от требований: WebSockets для браузеров, gRPC для сервисов, MQTT для устройств.