Repolode
dmotz

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. 1

    npmでTrysteroをインストールする

    npm i trystero
  2. 2

    コードにjoinRoomをインポートする

  3. 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 の数値は毎日更新されます。

関連プロジェクト