Skip to content

connectModule: refcounted Shared-Provider-Pool (WS/Doc-Sharing bei Cross-Module-Reads) #146

Description

@gergernaut

Kontext (aus dem Review zu #145): Cross-Module-Reads öffnen aktuell je eine eigene WebSocket + ein eigenes Y.Doc, ohne Sharing. Ein Modul, das ein fremdes Doc read-only mitliest, bündelt sich nicht mit anderen Konsumenten desselben Docs.

Ist-Zustand (unkritisch beim Zielmaßstab ~10–20 Nutzer):

  • Views werden conditional gerendert → nur ein Modul-View gleichzeitig gemountet; beim Wechsel conn.destroy() (WS zu). Taktische Übersicht und Einsatzabschnitte sind nie gleichzeitig offen.
  • Dauerhaft offen: chat + activity. Pro Moment also ~5 WS (aktiver View + 2), nicht 6.
  • Trend: je mehr Module sich gegenseitig lesen, desto mehr parallele WS/Docs pro Client.

Vorschlag (Hardening, Prio niedrig): refcounted Shared-Provider-Pool in packages/web/src/sync/provider.ts, keyed nach room×module:

  • N Komponenten, die dasselbe (room, module) verbinden, teilen sich eine WS + ein Y.Doc.
  • Refcount hoch beim connectModule, runter beim destroy; realer provider.destroy()/doc.destroy() erst beim letzten Release.
  • Aufrufer-API bleibt unverändert (connectModule(...) gibt weiter { doc, provider, destroy } zurück).

Nicht Teil von Milestone #3 — künftiger Härtungs-/Ausbau-Milestone. Kein akuter Handlungsbedarf; hier festgehalten, damit es nicht verloren geht.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions