Skip to content

キューブをつないだブラウザのタイマー画面を、ほかのブラウザ(/live)に映す - #39

Merged
riwn merged 1 commit into
mainfrom
live-view
Nov 2, 2026
Merged

riwn merged 1 commit into
mainfrom
live-view

Conversation

@riwn

@riwn riwn commented Nov 2, 2026

Copy link
Copy Markdown
Owner

PC でキューブをつないでタイマー画面を開いていると、スマホなどの「中継」(/live)に同じ画面を映す。見る側は見るだけで、記録も操作もしない。

  • メインはキューブがつながっている間だけ、回転・状態の置き換え・タイマーの状態を POST /api/live/events で送る。1つずつ順に送り、溜まった分はまとめる。送れなかったら次に今の状態を丸ごと送り直す。15秒ごとに生きている知らせ、タブを閉じたら sendBeacon で bye
  • サーバー(internal/live)は最新の状態をメモリにだけ持ち、GET /api/live/stream(SSE)で流す。見始めたときは今の状態(snapshot)から。40秒届かなければメインはいないとみなす。止めるときは SSE を切ってから Shutdown する
  • 時刻は端末ごとに基準が違うので、「始まってから何 ms たったか」で送り、見る側が自分の時計に置き直す
  • 見る側は自分用の CubeStore に映すので、その端末でキューブをつないでも混ざらない。映している間は画面を消さない
  • 送信は1手ごとなので、/api/live/events はリクエストのログに残さない
  • OpenAPI・README を更新。スクランブルとタイマーの表示部品は、操作のボタン無し・手数の上書きで見る側でも使えるようにした

試したこと:Go・vitest のテスト、型検査・lint。別ポートで動かしたサーバーに、モック接続のメインとスマホ幅の /live をつなぎ、スクランブル → インスペクション → 計測 → 完了、途中から開いた場合、メインを閉じた場合を確かめた。実機の GAN キューブではまだ試していない。

🤖 Generated with Claude Code

メイン(キューブをつないだタイマー画面)が回転・状態・タイマーを POST /api/live/events で送り、
見る側は GET /api/live/stream(SSE)で受け取って、自分用のキューブのストアとタイマーの表示に映す。
状態はサーバーのメモリにだけ持つ。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@riwn
riwn merged commit ed8c5ad into main Nov 2, 2026
2 checks passed
@riwn
riwn deleted the live-view branch November 2, 2026 04:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant