Update write deadline on SSE event push

Otherwise the server sees the connection as exceeding the deadline and
closes it after 30 seconds (our current timeout)

Issue: #12
This commit is contained in:
Eli Ribble 2026-05-21 15:26:44 +00:00
parent 41ed443d54
commit 03d40774cb
No known key found for this signature in database

View file

@ -104,6 +104,9 @@ func streamEvents(w http.ResponseWriter, r *http.Request, u platform.User) {
w.Header().Set("Connection", "keep-alive")
w.Header().Set("Access-Control-Allow-Origin", "*")
// Get response controller for deadline management
rc := http.NewResponseController(w)
uid, err := uuid.NewUUID()
if err != nil {
log.Error().Err(err).Msg("failed to create uuid")
@ -154,14 +157,24 @@ func streamEvents(w http.ResponseWriter, r *http.Request, u platform.User) {
return
case t := <-ticker.C:
// Send a heartbeat message
if err := rc.SetWriteDeadline(time.Now().Add(30 * time.Second)); err != nil {
log.Error().Err(err).Msg("Failed to set write deadline before heartbeat")
delete(connectionsSSE, &connection)
return
}
err = connection.SendHeartbeat(w, t)
if err != nil {
log.Error().Err(err).Msg("Failed to send heartbeat")
}
case e := <-connection.chanEvent:
if err := rc.SetWriteDeadline(time.Now().Add(30 * time.Second)); err != nil {
log.Error().Err(err).Msg("Failed to set write deadline before event")
delete(connectionsSSE, &connection)
return
}
err = connection.SendEvent(w, e)
if err != nil {
log.Error().Err(err).Msg("Failed to send heartbeat")
log.Error().Err(err).Msg("Failed to send event")
}
}
}