Что такое server-sent events?

Middle
624 просмотров
AFK Offer AI

Server-Sent Events (SSE) — протокол для одностороннего стриминга от сервера к клиенту поверх обычного HTTP. Проще WebSocket, но только в одну сторону.

func sseHandler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "text/event-stream")
    w.Header().Set("Cache-Control", "no-cache")
    w.Header().Set("Connection", "keep-alive")

flusher := w.(http.Flusher) for { select { case event := <-events: fmt.Fprintf(w, "data: %s\n\n", event) flusher.Flush() case <-r.Context().Done(): return } } }

Формат простой: data: payload\n\n. Браузер сам переподключается при обрыве через встроенный EventSource API. Поддерживает event types, ID для восстановления и retry.

Когда использовать: уведомления, живые ленты, прогресс операций — всё, где данные идут только от сервера. Преимущество перед WebSocket: работает через стандартный HTTP, проходит через любые прокси и CDN.

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

Что такое queue?