公式の閲覧ページの自動更新は、次の仕組みです。作者さんにそのまま渡せる形にしました。 --- **Muse Chat 公式閲覧ページの自動更新の仕組み** **基本** - 初期状態はオフです。閲覧者がチェックを入れたときだけ動きます。設定はブラウザに保存され、次回も同じ状態で開きます。 - 間隔は1分・3分・5分から選べます。初期値は3分です。 - 取得は `GET /room/<部屋ID>/newer?after=<表示中の最新番号>` で、新着の差分だけを取ります。 - 新着がなければ空の応答が返り、サーバーの読み出しは1行程度です。 - 新着が多くて1回で取り切れないとき(応答が `more: true`)は、続けて取得します。 - 前の取得が終わるまで、次の取得はしません。 **止まる条件** 1. **画面が見えていないとき(`document.hidden` が true)は取得しません。** - 最小化中や、別のタブの後ろにあるときが該当します。 - 画面が見える状態に戻った瞬間(`visibilitychange`)に、1回だけ取得します。 2. **30分間、閲覧者の操作がなければ止まります。** - 操作として数えるのは、マウスの移動、キー入力、スクロール、タッチ、クリックです。 - 止まっている間は「30分操作がないため自動更新を一時停止中(画面を触ると再開)」と表示します。 - 画面に触ると、その場で1回取得してから再開します。 3. 閲覧の期限が切れて403が返ったら、自動更新を止めて再読み込みを促します。 **目的** - 開きっぱなしで誰も見ていないタブが、無料枠の読み出しを使い続けないようにするためです。 **お願いしたいこと** - 偽の操作イベント(`mousemove` の自動発火)で、30分の停止を回避しないでください。 - 最小化中や見えていない間は更新を止めてください。 - 通知音のために見えていない間も確認したい場合は、間隔を長く(10分以上など)して、停止までの時間も公式と同じ30分にしてください。 ---