mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-22 14:38:12 +02:00
SSE: padding APRES caught_up (16Ko) au lieu de dessus - le dernier message n'est plus la queue coincee dans le tampon proxy
This commit is contained in:
1 parent
51c2c2d80f
commit
faa377e64f
1 file changed
+10
-4
+10
-4
@@ -338,10 +338,16 @@ func (c *Conversation) Subscribe(ctx context.Context, from int, emit func(map[st
|
|||||||
last = s
|
last = s
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Padding aussi sur caught_up : force le flush de la QUEUE du replay à travers un
|
if !emit(map[string]any{"caught_up": true}) {
|
||||||
// proxy qui re-bufferise par lots (Cloudflare) → les derniers messages arrivent
|
return
|
||||||
// avec le reste, plus 20-30 s après.
|
}
|
||||||
if !emit(map[string]any{"caught_up": true, "pad": strings.Repeat("·", 2048)}) {
|
// Le padding doit venir APRÈS caught_up, pas dessus. Un proxy (Cloudflare) garde
|
||||||
|
// toujours le DERNIER bout de flux en tampon jusqu'au prochain flush (~2-3 s). En
|
||||||
|
// envoyant un gros pad juste après, ce sont ses octets — et non le dernier vrai
|
||||||
|
// message — qui deviennent la « queue » qui attend : le dernier message et
|
||||||
|
// caught_up, eux, sont poussés dehors immédiatement. Le client ignore `pad`.
|
||||||
|
// 16 Ko : largement au-dessus du tampon de coalescence d'un proxy courant.
|
||||||
|
if !emit(map[string]any{"pad": strings.Repeat("·", 16384)}) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user