feat(sse): sync temps réel multi-appareils via Server-Sent Events v0.5.8

- 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>
This commit is contained in:
2026-05-25 20:12:02 +02:00
parent 2129da4f55
commit ec87bc091d
12 changed files with 123 additions and 2 deletions
+2
View File
@@ -1,4 +1,5 @@
import { useState, useEffect, useCallback, useRef } from 'react'
import { useServerEvents } from '../hooks/useServerEvents'
import type { Note, NoteFilters } from '../api/notes'
import { fetchNotes, createNote, updateNote, deleteNote, addAttachment, deleteAttachment } from '../api/notes'
import Modal from '../components/Modal'
@@ -354,6 +355,7 @@ export default function NotesPage() {
}, [filters])
useEffect(() => { void load() }, [load])
useServerEvents({ notes_changed: () => void load() })
function handleSearchChange(val: string) {
setSearchInput(val)