diff --git a/go.mod b/go.mod index fed29bf..8a5e647 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.23.1 require ( ella.to/immuta v0.0.3 - ella.to/sse v0.0.5 + ella.to/sse v0.0.6 ella.to/task v0.0.5 github.com/rs/xid v1.6.0 github.com/urfave/cli/v2 v2.27.5 diff --git a/go.sum b/go.sum index a106919..b3b6305 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,8 @@ ella.to/immuta v0.0.3 h1:QCtTvF7Lr5c807KUvPBJVCZLfQt7Rb+LRE6n+XIyLe4= ella.to/immuta v0.0.3/go.mod h1:0lKIf8Nu+irCQz5pX7lqrQaepMyfNM3zl4kRzK/oLNw= ella.to/solid v0.0.2 h1:RSxqe/HEbMZ/vcwwDD9xMQV643Q512IcS9IF5KHcp9w= ella.to/solid v0.0.2/go.mod h1:0+qlRn4069za08wDegNAFUICaKAZCZHKUjav8UEZml0= -ella.to/sse v0.0.5 h1:DHdc/8twQa6jhyK7B1cfeTCjO649vBhNRCu8JL4/+ck= -ella.to/sse v0.0.5/go.mod h1:KtOhMRF/qbSIB64YmrURiyQXr/Jg06/hJ0HLPzwu1+M= +ella.to/sse v0.0.6 h1:3zJui8y5iOfojWku3QZMFKKSinRtAtKivD8u3TrtDU4= +ella.to/sse v0.0.6/go.mod h1:KtOhMRF/qbSIB64YmrURiyQXr/Jg06/hJ0HLPzwu1+M= ella.to/task v0.0.5 h1:IURW3b38cOgf+/n3eBdyTdSqBZRUVdF/RvO6k2XEAwA= ella.to/task v0.0.5/go.mod h1:JW2NYqngeUmWczEaRq9WEj9E2QbXATuYELiC0/lWlCo= github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc= diff --git a/http.go b/http.go index 8aeb266..a707d72 100644 --- a/http.go +++ b/http.go @@ -26,6 +26,10 @@ const ( HeaderConsumerId = "X-BUS-CONSUMER-ID" ) +const ( + DefaultSsePingTimeout = 30 * time.Second +) + type Handler struct { mux *http.ServeMux eventsLog *immuta.Storage @@ -111,11 +115,12 @@ func (h *Handler) Get(w http.ResponseWriter, r *http.Request) { w.Header().Set(HeaderConsumerId, id) - pusher, err := sse.NewPusher(w) + pusher, err := sse.NewPusher(w, DefaultSsePingTimeout) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } + defer pusher.Close() var startPos int64 if start == StartOldest {