Gemeinsame Pinnwand
Go schreibt in D1, dann sendet das Durable Object des Themas das Fragment per hx-ws an jeden offenen Tab.
So funktioniert die Pinnwand
- Jede Änderung ist ein Formular-Post an einen Go-Handler im Worker. Er schreibt in D1, die SQLite-Datenbank von Cloudflare und die einzige Quelle der Wahrheit der Pinnwand, und erhöht die Version des Themas.
- Danach rendert der Handler die ganze Pinnwand einmal pro Sprache und übergibt sie dem Durable Object des Themas, das sie an jeden offenen Tab sendet. Im Browser wird nichts zusammengeführt: Jeder Push ersetzt die Pinnwand.
- Tabs bleiben mit hx-ws aus htmx 4 über WebSocket Hibernation verbunden, sodass tausend ruhende Tabs kaum etwas kosten, bis sich etwas ändert. Das Badge zählt, wer gerade hier ist.
- Jeder Push trägt die Version, aus der er entstanden ist. Ein Tab ignoriert einen Push, der älter ist als die angezeigte Pinnwand, sodass Änderungen, die sich im Netz kreuzen, nie zurückspringen.
- Jede Verbindung kann 60 Änderungen in 10 Sekunden vornehmen, und ein Thema fasst bis zu 1.000 offene Tabs.