Ajouter la collaboration temps réel progressivement
Ordre recommandé
- Un format de projet local versionné et récupérable.
- Sauvegarde serveur avec conflits visibles et historique.
- Présence éphémère séparée : curseur, sélection, utilisateur connecté.
- Édition partagée seulement sur les structures qui en ont besoin.
- CRDT/Yjs si la fusion concurrente hors ligne ou pair-à-pair est une exigence réelle.
Frontière des données
Les structures partagées décrivent le projet, les opérations et les références de médias. Les gros médias binaires passent par un stockage d'objets et un protocole d'upload dédié ; les diffuser dans le document CRDT ou le canal de présence gonfle mémoire et trafic.
Transport
WebSocket est le choix de compatibilité habituel, mais l'interface classique ne fournit pas de backpressure automatique. Borner buffers et fréquence, surveiller bufferedAmount, compacter les mises à jour et reconnecter avec reprise idempotente. WebTransport offre des primitives modernes mais reste une option progressive, jamais une dépendance implicite sans validation de compatibilité et d'infrastructure HTTP/3.
Autorité et sécurité
Le serveur authentifie, autorise par projet, impose limites et conserve un journal utile. Un CRDT résout la convergence des données, pas les permissions, la fraude, l'intégrité des fichiers ni la rétention.
Tests
Deux auteurs hors ligne, reconnexion dans des ordres différents, duplication de messages, retard important, rafale de présence, révocation d'accès, projet supprimé et mise à niveau de schéma pendant une session.