コンポーネント
← すべてのコンポーネント

在室表示

stimeo--presence

Action Cable の在室ロスター — サーバ側の状態はゼロ。

  • Core

stimeo--presence は「誰がこのページを見ているか」のロスターを Action Cable チャンネルに束ねます。サーバは在室状態を一切持ちません。各クライアントが heartbeat 間隔で appear ビーコン({ id, name })を broadcast し、timeout ms 聞こえない相手は各クライアントが自分側で期限切れにします。離脱は disconnect と pagehide(タブを閉じる・ハード遷移)で best-effort に通知({ id, leaving: true })し、通知が届かない強制終了は期限切れが拾います。未知の相手のビーコンを聞いたクライアントが自分を再アナウンス(スロットリング付き)するため、後から入った人のロスターも 1 往復で収束します。自分のビーコンは id の比較で無視します。描画は任意かつ宣言的で、count target(data-zero / -one / -other テンプレート)と、list + template のペア(相手 1 人 = clone 1 個。名前は data-presence-name スロットへ)を用意しています。data-present / data-present-count フックと join / leave / change イベントで独自 UI も組めます。サーバ側は typing-indicator と同じ薄い rebroadcast チャンネル(このカタログの PresenceChannel は仕様のサンプルに公開デプロイ用の固定 room allowlist を足したもの)。opt-in サブパス stimeo-ui/cable に同梱で、コアはゼロ依存のままです。

実行中

このページをもう 1 つのタブで開くと、ハートビート以内にもう 1 人のゲストがロスターに現れます(自分自身は載りません — 自分のビーコンは無視されます)。そのタブを閉じる(または別ページへ移動する)と離脱通知で消え、通知が届かなかった場合はタイムアウトの期限切れが拾います。

あなたは ゲスト 7027 として他の人に表示されます。