Trystero - サーバー不要で即座にマルチプレイヤーWebアプリを作る
(github.com/dmotz)- 数行のコードだけで、サーバーなしで相互接続されるマルチプレイヤーWebアプリを実装できるようにするライブラリ
- ブラウザのWebRTCをベースに、公開ネットワークをシグナリングチャネルとして活用し、P2Pマッチングと通信を自動化
- BitTorrent, Nostr, MQTT, IPFS, Supabase, Firebaseのいずれかを選んで、サーバー不要のピア発見を実行
- シグナリング後のアプリデータは中間媒体を経由せず、P2P + E2E暗号化で送信される
- Rooms/ブロードキャスト、自動シリアライズ、大容量データのチャンク化/スロットリング、進捗イベント、セッションデータ暗号化、ストリームメタデータなどの高水準抽象化を提供
- ブラウザだけでなくNode/Deno/Bunでも動作し、TURNサーバー設定、Reactフック、サーバーサイド実行など実践的な機能をサポート
- パブリックインフラを設定不要で活用する方式のため、さまざまな実験やプロトタイピングに向いている
- デモサイト - https://oxism.com/trystero を2つのタブで同時に開いて、マウスの移動/クリックを試してみるとすぐに確認可能
- Trysteroで人々が作っているものを見る - Awesome Trystero
8件のコメント
TURNサーバーはご先祖様が用意してくれるんですか?
ソースに
'stun:stun.cloudflare.com:3478'が埋め込まれていますねstunではなくturnです。stunは単に STUN の基準で「あなたは誰か」を知らせる程度なので、公開サーバーが多少ありますが、turnはトラフィックをリレーしなければならないため、(高価なので)お金を払って使うか、自前で構築するかしなければなりません。例) https://github.com/coturn/coturn
こういうものです。
stunだけで通信できる場合が多いのは確かですが、単純に「できる」と言うには……で……きなくはないけど……うーん、という感じですね。
P2PマッチングならTURNは不要ではないですか
WebRTCでおっしゃる「p2pマッチング」の意図によると思います。
1番であれば、おっしゃる通り TURN は不要です。
2番でも、状況が良くて相互の UDP 通信が成功している状態なら TURN は不要です。
2番で、相互に UDP でのパケット通信が失敗している状態では TURN が必要です。
失敗する要因は
という場合は TURN を使う必要があります。
(IPv4 only <-> IPv6 only がだめだというのは、記憶を確認していて初めて知りました)
ええ、つまり2番です。『サーバーなしで相互連携』『ライブラリ』と言っていましたが、期待しすぎなのではないでしょうか……
どの部分をおっしゃっているのでしょうか?
-> これなら、私の知識が古いのかもしれません。私が理解していて(共有した)内容以降に状況が変わった部分があれば、教えていただけるとありがたいです〜!
-> skageektpさんのおっしゃることが正しいです。ライブラリなのだから、その程度は大目に見ることもできます。私が敏感すぎました。
私は
3. ちゃんと使うには STUN だけでは不十分で TURN が必要なのに、誇張がひどいな〜
を表現していました.
1番と2番の説明について、
に訂正します。元の文章では誤解の余地がありますね。