v0.4.3 : anti-buffering SSE (Cloudflare) - fin des derniers messages en retard au refresh

Le chat E2E d'app.ajean.link traverse Cloudflare (ajean.link, proxy orange) qui
bufferise le flux SSE par lots : la queue du replay arrivait 20-30s apres le reste,
de facon intermittente (surtout Safari iOS). Corrige par la technique standard :
padding d'amorcage en tete de flux + padding sur caught_up (force le flush de la
queue), Cache-Control: no-transform (interdit a Cloudflare de bufferiser/compresser),
et heartbeat 15s->4s (borne le pire cas).
This commit is contained in:
nathaninline committed 2026-07-22 09:15:15 +02:00
1 parent 7d104e3213
commit 51c2c2d80f
7 files changed
+25 -8

No files matched your search

+3 -1
View File
@@ -157,7 +157,9 @@ func handleE2EChat(w http.ResponseWriter, r *http.Request) {
return
}
w.Header().Set("Content-Type", "text/event-stream")
w.Header().Set("Cache-Control", "no-cache")
// no-transform : interdit à Cloudflare (proxy orange sur ajean.link) de
// bufferiser/compresser le flux — sinon les événements arrivent en retard.
w.Header().Set("Cache-Control", "no-cache, no-transform")
w.Header().Set("X-Accel-Buffering", "no")
flusher, _ := w.(http.Flusher)
mu, stop := sseHeartbeat(w, flusher)