Auth、Database、Storageなどを備え、Dockerでセルフホストできるオープンソースのアプリ開発向けバックエンドプラットフォーム。
dmotz/trystero
独自サーバーなしで、WebRTCによるブラウザー間のP2P接続を実現するマルチプレイヤーWebアプリ向けJavaScriptライブラリ。
- スター
- 2,796
- フォーク
- 161
- 未解決の Issue
- 7
- 最終コミット
- 昨日
これは何?
Trysteroは、通常WebRTCで必要となるマッチメイキングを担います。ブラウザーはルームIDを使って参加し、Nostr(デフォルト)、BitTorrent、MQTT、IPFS、Supabase、Firebase、またはセルフホストのWebSocketリレーなどのシグナリングチャネルを通じて、互いを検出します。接続後、アプリケーションのデータはピア間を直接送信され、エンドツーエンドで暗号化されるため、シグナリング経路でやり取りされるのは接続情報だけです。
WebRTC上に、ルームとブロードキャスト、メッセージ送信用の型付きアクション、大きなペイロードの自動シリアライズと分割、進捗イベント、リクエスト/レスポンス呼び出し、音声・動画ストリームのサポートを提供します。同じAPIをブラウザー、Node、Bun、Denoで利用でき、React hooksも含まれています。利用する方式を切り替えるには、インポートするパッケージを変更するだけです。
TrysteroはTypeScriptで実装され、npmではtrysteroというパッケージ名で配布されています。方式ごとのパッケージは@trystero-p2pスコープで提供されています。
主な機能
- 01Nostr、BitTorrent、MQTT、IPFS、Supabase、Firebase、またはWebSocketリレーを使ったサーバーレスのピア検出
- 02ブロードキャストと、ピアへのメッセージ送信に使える型付きカスタムアクションを備えたルーム
- 03大きなデータの自動シリアライズと分割、および進捗イベント
- 04ピア間での音声・動画ストリームの共有
- 05任意で利用できるパスワードベースのセッション暗号化とTURNサーバーのサポート
- 06ブラウザーと、サーバー側のNode、Bun、Denoで動作
ユースケース
- バックエンドを維持せずに、ブラウザーベースのマルチプレイヤーゲームを開発する
- ユーザー間でプライベートな音声・動画チャットルームを作成する
- Webアプリでブラウザー間のファイル転送を行う
- カーソルやフォームデータなどの共有状態を共同作業者間で同期する
クイックスタート
- 1
npmでTrysteroをインストールする
npm i trystero - 2
コードにjoinRoomをインポートする
- 3
一意のappIdとルームIDを指定してルームに参加する
使う前に知っておきたいこと
- ピアの検出はNostr、MQTT、Supabaseなどのサードパーティ製ストラテジーネットワークに依存するため、アプリはそのネットワークが利用可能であることを前提とします。
- ブラウザーが処理できるWebRTC接続数には上限があるため、ルームの規模は小さく保つ必要があります。
- 受信ファイルはブラウザーのメモリに収まる必要があり、各ルームの受信予算はデフォルトで256 MiBです。
トピック
よくある質問
- trystero とは?
- 独自サーバーなしで、WebRTCによるブラウザー間のP2P接続を実現するマルチプレイヤーWebアプリ向けJavaScriptライブラリ。 Trysteroは、通常WebRTCで必要となるマッチメイキングを担います。ブラウザーはルームIDを使って参加し、Nostr(デフォルト)、BitTorrent、MQTT、IPFS、Supabase、Firebase、またはセルフホストのWebSocketリレーなどのシグナリングチャネルを通じて、互いを検出します。接続後、アプリケーションのデータはピア間を直接送信され、エンドツーエンドで暗号化されるため、シグナリング経路でやり取りされるのは接続情報だけです。
- trystero は無料で使えますか?ライセンスは?
- trystero は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- trystero は今もメンテナンスされていますか?
- 活発にメンテナンス中。trystero の最終コミットは 2026年10月18日 です。
- trystero は何に使えますか?
- バックエンドを維持せずに、ブラウザーベースのマルチプレイヤーゲームを開発する ユーザー間でプライベートな音声・動画チャットルームを作成する Webアプリでブラウザー間のファイル転送を行う カーソルやフォームデータなどの共有状態を共同作業者間で同期する
- trystero のインストール方法は?
- npmでTrysteroをインストールする: npm i trystero コードにjoinRoomをインポートする 一意のappIdとルームIDを指定してルームに参加する
- trystero はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/dmotz/trystero
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
人とAIエージェントをつなぐ基盤として使える、リアルタイム音声・映像・データ向けのオープンソースGo製WebRTC SFUサーバー。
サンドボックス化されたプラグインを備え、WordPressのような拡張性と管理画面のUXをサーバーレス環境にもたらす、AstroベースのフルスタックTypeScript CMSです。
Node.js向けの権威型マルチプレイヤーフレームワーク。状態同期、ルームベースのマッチメイキング、Web・Unity・GodotなどのクライアントSDKを提供します。
多様なランタイムやフレームワークで動作する、軽量でセルフホスト可能なWeb標準ベースのバックエンド。
ランタイム、バンドラー、テストランナー、パッケージマネージャーを単一の実行ファイルにまとめた、高速なJavaScript/TypeScriptツールキット。