ec87bc091d
- Broadcaster asyncio.Queue avec keepalive 25s (prévient timeout proxy) - Endpoint GET /api/events/stream (StreamingResponse text/event-stream) - Broadcast notes_changed / todos_changed / shopping_changed sur toutes mutations - Hook useServerEvents: EventSource avec reconnexion automatique (3s) - Pages Notes, Todos, Shopping abonnées aux événements SSE - nginx: location SSE dédiée (proxy_buffering off, timeout 24h) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
19 lines
415 B
Python
19 lines
415 B
Python
from fastapi import APIRouter
|
|
from fastapi.responses import StreamingResponse
|
|
|
|
from app.core.broadcaster import broadcaster
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get("/stream")
|
|
async def event_stream():
|
|
return StreamingResponse(
|
|
broadcaster.subscribe(),
|
|
media_type="text/event-stream",
|
|
headers={
|
|
"Cache-Control": "no-cache",
|
|
"X-Accel-Buffering": "no",
|
|
},
|
|
)
|