概要
Trystero を使ったリアルタイム通信の仕組みを解説 マウス操作やクリック の同期方法を具体的に紹介 複数プロトコル (BitTorrent, Nostr, MQTT, IPFS, Supabase, Firebase)対応 コード例で ルーム参加・イベント送受信 の流れを説明 拡張機能(音声・映像配信やバイナリデータ送信)の案内
Trysteroによるリアルタイム同期の仕組み
- Trystero はWebページ上で ユーザー同士をリアルタイム接続 するためのライブラリ
- マウスの動き や クリック操作 を他のユーザーと 同期 可能
- P2P接続 をBitTorrent、Nostr、MQTT、IPFS、Supabase、Firebaseなど多様な プロトコル で実現
- ページを開いているユーザー同士が 直接接続 し、 即時反映 を体験
- 他の端末やタブで同じURLを開くことで、 複数人接続の挙動 を簡単に確認可能
ルームへの参加方法と基本コード
- ルーム参加には appId と roomId を指定
- 例:
import {joinRoom} from 'trystero'const room = joinRoom({appId: 'trystero-lounge'}, '101')
- joinRoom関数 でルームを作成・参加し、 通信の基盤 を構築
ピアの参加・退出イベントの監視
- room.onPeerJoin で新規参加者の検知
- room.onPeerLeave で退出者の検知
- 例:
room.onPeerJoin(addCursor)room.onPeerLeave(removeCursor)
- 参加・退出時に UI更新 や カーソル追加・削除 などの処理が可能
アクションの送受信設定
- makeAction でカスタムイベント(例:mouseMove, click)を定義
- 例:
const [sendMove, getMove] = room.makeAction('mouseMove')const [sendClick, getClick] = room.makeAction('click')
- sendMove や sendClick でイベントを送信
- getMove や getClick で受信イベントに応答
イベントのブロードキャストと受信
- window.addEventListener でマウス移動やクリックを検知し、 sendMove/sendClick で送信
- 例:
window.addEventListener('mousemove', e => sendMove([e.clientX, e.clientY]))window.addEventListener('click', () => sendClick(randomFruit()))
- 例:
- getMove で他ユーザーのマウス座標を受信し、 setCursorPosition でUI反映
- getClick でクリックイベントを受信し、 dropFruitFrom で処理
拡張機能とドキュメント案内
- Trysteroは 音声・映像ストリーム や ファイル送信 など 多用途対応
- 詳細や応用例は README で確認可能
- GitHub: dmotz/trystero でリファレンス・サンプルコードを提供