共有ボード

Go が D1 に書き込み、そのトピックの Durable Object が hx-ws 経由で開いているすべてのタブにフラグメントをプッシュします。

トピックlobby
このページを別のタブで開いて、何か変更してみてください。
…人がオンライン
71バージョン 226
hu

hello man

解决

Ggh

Vnn

ボードの仕組み

  1. 変更はそれぞれ、Worker 上の Go ハンドラーへのフォーム送信です。ハンドラーは Cloudflare の SQLite データベースでありボードの信頼できる唯一の情報源である D1 に書き込み、トピックのバージョンを上げます。
  2. 次にハンドラーはボード全体を言語ごとに 1 回ずつレンダリングし、トピックの Durable Object に渡します。Durable Object はそれを開いているすべてのタブに送ります。ブラウザーでは何もマージしません。プッシュのたびにボードが置き換わります。
  3. タブは WebSocket Hibernation 上の htmx 4 の hx-ws で接続を保つため、何も変化がない間は、待機中のタブが千個あってもほとんどコストがかかりません。バッジには今ここにいる人数が表示されます。
  4. プッシュにはそれぞれ、元になったバージョンが付いています。タブは表示中のボードより古いプッシュを無視するため、ネットワーク上で行き違った変更によって表示が巻き戻ることはありません。
  5. 1 つの接続から 10 秒間に 60 件まで変更でき、1 つのトピックでは最大 1,000 個のタブを開けます。