
Tor隠れサービスを介したエンドツーエンド暗号化、設定可能な暗号、グループ通話のためのリレーモード、および反フォレンジックデータ破壊を備えた暗号化プッシュトゥトーク音声およびテキスト通信。
Tor 隠しサービスを介した暗号化プッシュ・トゥ・トーク音声通信。
TerminalPhone は、単一の自己完結型 Bash スクリプトで、Tor ネットワークを介して 2 者以上の間で匿名のエンドツーエンド暗号化音声・テキスト通信を提供します。これはトランシーバーとして動作します。音声メッセージを録音すると、圧縮・暗号化され、単一のユニットとしてリモート側に送信されます。通話中に暗号化されたテキストメッセージを送信することもできます。サーバーインフラは不要、アカウントも電話番号も不要です。あなたの Tor 隠しサービスの .onion アドレスがあなたのアイデンティティになります。
T を押してメッセージを入力します。.onion アドレスを交換します。リモートアドレスは通話ヘッダーに表示されます。S を押して設定にアクセスします。その場で暗号を変更でき、リモート側の表示は自動的に更新されます。jq が必要です (必要に応じてインストールされます)。各トリガー後に音量は自動的に復元されます。.onion アドレスは永続的でルーティング可能なエンドポイントとして機能します。ポートフォワーディングやパブリック IP は不要です。.onion アドレスをターミナル内でスキャン可能な QR コードとして表示できます。qrencode がインストールされていない場合は、インストールを促すプロンプトが表示されます。QR コードは代替画面バッファにレンダリングされ、閉じると破棄されます。一部の QR スキャナーは http:// を自動的に先頭に付加するという注意書きがあり、このプレフィックスはダイヤル時に自動的に除去されます。.tmp 拡張子とランダムな 16 進識別子を使用します。ファイルタイプやタイミングのメタデータがファイルシステムに漏洩することはありません。ExcludeNodes と StrictNodes を使用します。/dev/urandom からのランダムデータで上書きします。ファイルサイズが読み取られ、そのバイト数のランダムデータが conv=notrunc を使用した dd でファイルに書き込まれ、sync でストレージデバイスにフラッシュされ、その後 rm でファイルが削除されます。すべての機密ランタイムファイルを対象とします: 生の PCM 録音、Opus エンコード音声、暗号化ペイロード、復号されたインバウンド音声とチャット、音声エフェクト中間ファイル、暗号と HMAC 鍵素材、ナンスログ、セッションフラグ、PID ファイル、名前付きパイプ、ローテーション時の Tor 隠しサービス鍵、リレーセッションデータ。ディレクトリの場合、内部のすべてのファイルが再帰的に上書きされます。組み込みのテストオプションはサンプルファイルを作成し、元の内容を平文と 16 進数で表示し、上書きして、上書きされた 16 進数を表示して、ユーザーがデータが破棄されたことを視覚的に確認できるようにします。デフォルトではオフ — ほとんどのユーザーにとって、標準の rm で十分です。TerminalPhone の一時ファイルは小さく短命で、ディスク領域は通常、通常のシステムアクティビティによってすぐに再利用されます。この機能は、フォレンジックリカバリに対する追加の保護層を求めるユーザー向けです。注意: SSD やフラッシュストレージでは、ウェアレベリングにより上書きが異なる物理 NAND セルに書き込まれる可能性があります — フラッシュメディアではフルディスク暗号化のみが信頼できる防御策です。従来の HDD では、上書きは同じ物理位置のデータを置き換えるため、すべてのソフトウェアベースのリカバリに対して効果的です。RELAY:1 ハンドシェイクを介してリレーモードを自動検出し、ライブのグループ発信者数を表示します。1 人の発信者が退出しても他の発信者は切断されません。オペレーターダッシュボードには発信者数、稼働時間、データスループットが表示されます。対応ディストリビューション: Debian/Ubuntu (apt)、Fedora/RHEL (dnf)、Arch (pacman)。``` bash
git clone https://gitlab.com/here_forawhile/terminalphone.git cd terminalphone bash terminalphone.sh
メニューからオプション **7** を選択すると、すべての依存関係が自動的にインストールされます。以下のパッケージがインストールされます:
| パッケージ | 目的 |
|---|---|
| `tor` | オニオンルーティングと隠しサービス |
| `opus-tools` | 音声圧縮(Opusコーデック) |
| `sox` | 音声処理ユーティリティ |
| `socat` | Tor SOCKSプロキシを介した双方向TCPリレー |
| `openssl` | AES-256-CBC暗号化および復号化 |
| `alsa-utils` | 音声の録音と再生(`arecord`、`aplay`) |
### macOS``` bash
git clone https://gitlab.com/here_forawhile/terminalphone.git
cd terminalphone
bash terminalphone.sh
オプション 7 を選択すると、すべての依存関係が自動的にインストールされます。Homebrew がインストールされていない場合、スクリプトが最初にそれをインストールし、その後以下のパッケージをインストールします:
注: macOS では、ALSA の代わりに録音 (rec) と再生 (play) の両方に sox を使用します。追加のオーディオパッケージは必要ありません。
Apple Silicon (M1/M2/M3+): ターミナルが Rosetta 2 で実行されている場合 (つまり x86_64 プロセス)、Homebrew がネイティブの ARM プレフィックス (/opt/homebrew) にインストールされていると、brew install は通常 Cannot install under Rosetta 2 in ARM default prefix というエラーで失敗します。依存関係インストーラーはこれを検出し、arch -arm64 で Homebrew を自動的に再実行するため、スクリプトの起動方法に関係なくオプション 7 が機能します。
TerminalPhone は Termux を通じて Android デバイスをサポートします。Android のサンドボックス化されたオーディオアーキテクチャのため、追加のコンポーネントが 2 つ必要です。
ステップ 1: Termux をインストールする
F-Droid から Termux をインストールします。Play ストア版は古く、更新が提供されなくなっているため、使用しないでください。
ステップ 2: Termux:API アプリをインストールする
F-Droid から Termux:API をインストールします。これは Termux パッケージではなく、Termux と Android システム API の間のブリッジを提供する独立した Android アプリケーションです。TerminalPhone はデバイスのマイクとメディア再生にアクセスするためにこれを必要とします。
デバイスに Termux:API アプリがインストールされていない場合、termux-microphone-record および termux-media-player コマンドは機能せず、音声の録音と再生は静かに失敗します。
Termux:API アプリをインストールした後、プロンプトが表示されたらマイクの権限を付与します。
ステップ 3: Termux 内に Termux:API パッケージをインストールする```bash pkg install termux-api
Termux:APIアプリと通信するコマンドラインユーティリティをインストールします。
**ステップ4: TerminalPhoneを実行する**```bash
git clone https://gitlab.com/here_forawhile/terminalphone.git
cd terminalphone
bash terminalphone.sh
オプション 7 を選択して、残りの依存関係をすべてインストールします。インストーラーはまず pkg upgrade を実行してパッケージのリンク問題を解決し、その後 tor、opus-tools、sox、socat、openssl-tool、ffmpeg、termux-api をインストールします。
Termux固有の依存関係:
| パッケージ | 目的 |
|---|---|
termux-api | AndroidのマイクとメディアプレーヤーへのCLIブリッジ |
ffmpeg | AndroidのM4A録音をOpusエンコード用の生PCMに変換 |
To receive a call: Select option 1 (Listen for calls) To make a call: Select option 2 (Call an onion address)
両当事者は、通話を開始する前にTorが実行されており、同じ共有シークレットが設定されている必要があります。
---
## 使用方法
### メニューオプション```
1 Listen for calls Wait for an incoming connection
2 Call an onion address Connect to a remote .onion endpoint
3 Show my onion address Display your .onion address (with optional QR code)
4 Set shared secret Configure the pre-shared encryption key
5 Test audio (loopback) Record and play back audio locally
6 Show status Display Tor, secret, and connection status
7 Install dependencies Install all required packages
8 Start Tor Start the Tor process and hidden service
9 Stop Tor Stop the Tor process
10 Restart Tor Stop and restart Tor
11 Rotate onion address Generate a new .onion address (destroys the old one)
12 Settings Configure Opus quality, PTT chime, Snowflake, auto-listen, PTT key, voice changer, security, Tor settings
13 Relay mode Start a zero-knowledge group bridge for N callers
0 Quit Stop Tor and exit
全二重モード(WebSocket):
| キー | 操作 |
|---|---|
| M | マイクのミュート / ミュート解除。 |
| T | 通話中に暗号化されたテキストメッセージを送信。 |
| Q | 切断してメニューに戻る。 |
プッシュトークモード(Linux / macOS):
| キー | 操作 |
|---|---|
| SPACE 長押し | 音声メッセージを録音。離すと自動送信。 |
| T | 暗号化されたテキストメッセージを送信。 |
| S | 通話中に設定を開く(暗号方式の変更、品質の調整)。 |
| Q | 切断してメニューに戻る。 |
プッシュトークモード(Termux):
Android のソフトウェアキーボードは、押したときではなく離したときにキーイベントを送信します。TerminalPhone は Termux ではトグルモードを使用することで対応しています。
| キー | 操作 |
|---|---|
| SPACE をタップ | 録音を開始。再度タップで停止して送信。 |
| T | 暗号化されたテキストメッセージを送信。 |
| S | 通話中に設定を開く(暗号方式の変更、品質の調整)。 |
| Q |
bash terminalphone.sh install # Install dependencies bash terminalphone.sh test # Audio loopback test bash terminalphone.sh status # Show status bash terminalphone.sh listen # Listen for incoming calls bash terminalphone.sh call ADDRESS # Call a .onion address bash terminalphone.sh relay # Start relay mode (group bridge)
---
## 仕組み
TerminalPhoneは「録音してから送信」モデルを採用しています。PTTを有効にすると、マイクは解放するまで継続的に録音します。録音が完了すると、以下のパイプラインで処理されます:```
SENDER RECEIVER
────── ────────
Microphone Speaker
│ ▲
▼ │
Raw PCM (8kHz, 16-bit, mono) Opus decode
│ ▲
▼ │
Opus encode (16kbps) AES-256-CBC decrypt
│ ▲
▼ │
AES-256-CBC encrypt Base64 decode
│ ▲
▼ │
Base64 encode ──▶ socat ──▶ Tor ──▶ socat ──▶ Receive
ワイヤプロトコルはTCP接続上の行ベースのテキストです:
Termuxでは、AndroidのネイティブM4A録音形式を処理するための追加の変換ステップがあり、ffmpegを使用してOpusエンコード前に生のPCMに変換します。
暗号化: すべての音声は、送信前にユーザー設定可能な暗号方式(デフォルト: AES-256-CBC)で暗号化されます。21種類の厳選された暗号方式が利用可能で、最強(256ビット)から十分(128ビット)までランク付けされています。鍵は、PBKDF2と10,000回の反復を使用して事前共有シークレットから導出されます。暗号化はアプリケーション層で適用され、Torのトランスポート暗号化とは独立しています。シークレットはコマンドライン引数ではなく、ファイル記述子(-pass fd:3)を介してOpenSSLに渡されるため、プロセステーブルに公開されることはありません。
暗号方式のネゴシエーション: 両当事者は、接続時および通話中の暗号方式変更時に暗号方式名を交換します。暗号方式名は秘密ではありません(ケルクホフスの原理)。ローカルとリモートの暗号方式が一致しない場合、両当事者は通話ヘッダーに赤いインジケーターを表示します。
トランスポート: すべてのデータはTorの隠しサービス回路を通じてルーティングされます。どちらの当事者のIPアドレスも公開されません。クリアネットトラフィックはありません。ネットワーク観測者は、この接続をどちらかの当事者に帰属させることはできません。
トラフィック分析耐性: 録音してから送信するモデルは、不規則な送信パターン(不規則な間隔での可変長メッセージ)を生成し、連続ストリーミングよりも識別が困難です。
認証: 共有シークレットは暗黙の認証として機能します。両当事者が同じシークレットを持っていない場合、復号化は失敗し、音声は再生されません。接続時に、両当事者は発信者識別のために.onionアドレスを交換します。シークレットはオプションでパスフレーズで保存時に暗号化できます。起動時に、スクリプトはそれをロック解除するためのパスフレーズを要求します。
HMACプロトコル署名(オプション): 有効にすると、HANGUP、PTT_START、PINGなどの制御信号を含むすべてのワイヤプロトコルメッセージが、共有シークレットから導出されたHMAC-SHA256で署名されます。メッセージごとにランダムなノンスが含まれるため、同一のコマンドでも一意の署名が生成されます。確認済みのノンスは通話ごとに追跡され、重複は拒否されるため、リプレイ攻撃を防ぎます。HMAC設定は、通話開始時にランタイムファイルを介して固定されるため、通話中に設定が切り替えられた場合でも、送信パスと受信パスの両方が常に一致します(変更は次の通話で有効になります)。受信側では、無効、欠落、またはリプレイされた署名を持つメッセージはすべて静かに破棄されます。これにより、Tor回路を侵害した(ただし共有シークレットを持たない)攻撃者がコマンドを注入またはリプレイすることを防ぎます。通話が機能するには、両当事者がHMACを有効にする必要があります。バージョン1.1.3より前のバージョンとは互換性がありません。
制限事項:
リレーモードのセキュリティ: リレーはアーキテクチャ上ゼロ知識です。共有シークレットを保持することはなく、コンテンツを復号化できません。音声データは、メモリ内にのみ存在するカーネルパイプバッファー(FIFO)を流れます -- ディスクに書き込まれるものはありません。リレーが停止すると、すべての一時ファイルが削除されます。リレーオペレーターは、何が話されたか、発信者が誰であるかを判断したり、メッセージを読んだりすることはできません。リレーはすべての制御信号(HANGUP、ID:、CIPHER:、PTT_START、PTT_STOP)をフィルタリングし、AUDIO:、MSG:、PINGのみを転送します。グローバルな受動的敵対者は、発信者をリレーと関連付けるためにトラフィック相関分析を実行できる可能性がありますが、メッセージコンテンツは不透明なままです。
リレー容量: 主なボトルネックはTorの帯域幅です。Torの隠しサービススループットは非常に変動しやすく、回路品質、リレー輻輳、地理的距離に依存します。典型的な10秒の音声メッセージは約20KBの暗号化データで、各送信はN-1人のリスナーにファンアウトされます。
現実的な容量は、電話(Termux)で実行されるリレーの場合は3--5人の発信者、安定した接続を持つ専用Linuxマシンの場合は5--10人の発信者です。モバイルデバイスで実行されるリレーは追加の制約に直面します: モバイルデータはTorに加えてレイテンシを追加し、Androidはメモリを再利用するためにバックグラウンドのTermuxプロセスを強制終了する可能性があり、接続された発信者ごとにバッテリー消費が増加します。Tor回路の帯域幅は、パス品質に応じて50KB/sから500KB/sまで変化し、回路はセッション中に劣化またはローテーションする可能性があります。シングルホップモードはスループットを向上させますが、Torリレー輻輳を排除するものではありません。これらの推定値は、一度に1人だけが送信するPTTモデルを前提としています -- 同時送信はパフォーマンスをさらに低下させます。グループ通話の発信者は、Opusビットレート(設定 → Opusエンコーディング)を下げてメッセージサイズを減らし、リレーへの負荷を軽減することを検討する必要があります。
すべての設定は、スクリプトの場所を基準とした.terminalphone/に保存されます:```
.terminalphone/
tor_data/ Tor data directory and hidden service keys
audio/ Temporary audio files (cleaned on exit)
pids/ Process ID tracking
shared_secret Encrypted shared secret file
torrc Generated Tor configuration
デフォルトのオーディオパラメータ(スクリプトの先頭で定義):
| パラメータ | デフォルト | 説明 |
|---|---|---|
| `LISTEN_PORT` | 7777 | 着信接続用のTCPポート |
| `TOR_SOCKS_PORT` | 9050 | Tor SOCKSプロキシポート |
| `OPUS_BITRATE` | 16 | Opusエンコードのビットレート(kbps) |
| `CIPHER` | aes-256-cbc | 暗号化方式(設定で変更可能) |
| `SNOWFLAKE_ENABLED` | 0 | 検閲回避用のSnowflakeブリッジ |
| `AUTO_LISTEN` | 0 | Tor起動時に通話を自動待受 |
| `PTT_KEY` | SPACE | プッシュトークキー(設定で変更可能) |
| `VOL_PTT` | 0 | 音量ダウンのダブルタップでPTT、Termuxのみ(実験的) |
| `EXCLUDE_NODES` | (空) | TorのExcludeNodes国リスト(例: `{US},{GB}`) |
| `HMAC_AUTH` | 0 | すべてのプロトコルメッセージにHMAC署名(任意、両側で一致させる必要あり) |
| `OVERWRITE_DELETE` | 0 | 削除前に一時ファイルをランダムデータで上書き(デフォルトではオフ) |
| `PTT_CHIME` | off | PTT通知チャイムのプリセット(off、tone、double、chirp、ding、click、custom) |
| `SINGLE_HOP` | 0 | 低遅延用のシングルホップTorモード(サーバーの匿名性を無効化) |
| `SAMPLE_RATE` | 8000 | オーディオのサンプルレート(Hz) |
| `CHUNK_DURATION` | 1 | オーディオテストチャンクの長さ(秒) |
---
## トラブルシューティング
**Torのブートストラップに失敗する:**
`.terminalphone/tor_data/tor.log` にあるTorログを確認してください。一般的な原因には、時計のずれ、Torをブロックするネットワーク制限、同じSOCKSポートを使用している別のTorインスタンスなどがあります。
**Termuxで音声が出ない:**
Termux:APIアプリがF-Droidからインストールされていることを確認してください(`termux-api` パッケージだけでは不十分)。Androidの設定でTermux:APIアプリにマイクの権限を付与してください。オーディオループバックテスト(オプション5)を実行して確認してください。
**Termuxでffmpegのインストールが失敗する:**
依存関係をインストールする前に `pkg upgrade` を実行してください。インストーラーはこれを自動的に行いますが、パッケージを手動でインストールした場合、古い共有ライブラリがリンクエラーを引き起こす可能性があります。
**オーディオテストは動作するが通話が無音になる:**
両者が同じ共有シークレットを使用していることを確認してください。シークレットが一致しない場合、エラーメッセージなしで復号化に失敗します -- 通話は接続されますが、音声は聞こえません。
**Snowflakeブリッジの接続が遅い:**
SnowflakeはWebRTCプロキシ経由でトラフィックをルーティングするため、ブートストラップに余分な時間がかかります。Snowflakeが有効な場合、Torが100%に達するまでに30〜60秒(またはそれ以上)かかるのは正常です。スクリプトはブートストラップ中に忍耐を促す通知を表示します。
**最初のTorブートストラップが遅い:**
初回起動時、Torはネットワークコンセンサス全体をゼロからダウンロードする必要があり、1〜2分かかることがあります。スクリプトはこれを検出して通知を表示します。ブートストラップのタイムアウトは初回実行時に120秒から300秒に自動的に延長されます。以降の起動ではキャッシュされたコンセンサスデータが使用され、はるかに高速です。
**通話終了後もメニューに戻らない:**
Qを押した後にスクリプトがハングした場合は、Ctrl+Cを押して強制的にクリーンアップし、シェルに戻ってください。
**macOSで `Cannot install under Rosetta 2 in ARM default prefix` エラー:**
これはApple Siliconで、ターミナルがRosetta 2(`x86_64` プロセス)で実行されている一方、HomebrewがネイティブのARMプレフィックス(`/opt/homebrew`)にある場合に発生します。依存関係インストーラー(オプション **7**)はこれを検出し、`arch -arm64` の下で `brew` を自動的に再実行します。パッケージを手動でインストールする場合は、自分で `arch -arm64 brew install <pkg>` のようにプレフィックスを付けてください。または、`arch -arm64 bash terminalphone.sh` でスクリプトをネイティブに起動してください。
---
[MIRROR V1.0.0](https://bin.disroot.org/?e1356291b098cb75#FMQ4gxFwgdr3rjR1dpGS2csLmDPzDEkQW16fQ5P2Vt4y)
[MIRROR V1.0.1](https://bin.disroot.org/?d3bc0b8976113f58#AuUm4ev4vfeVmPyrh2KjAdhDP6WN4UX6yKQh9ERGD5Qt)
[MIRROR V1.0.2](https://bin.disroot.org/?6bc5b2fd046de1d7#G7TmnytrMeaM5AZYWth6BjjdqUb9RDf3K9erHUExKcGX)
[MIRROR V1.0.3](https://bin.disroot.org/?c5010f039e4693fd#Brp1w7LRQH9d5Ye5npZDPxNVR855SW9QUAk9cJaUuLYX)
[MIRROR V1.0.4](https://bin.disroot.org/?1831f6b78e349142#7zaAMVPNJL3MfbGJzjtm6cCPcvQftf4ULXupdne5dRKw)
[MIRROR V1.0.5](https://bin.disroot.org/?edfcfc844987ed03#56LuBbqbkfNDXfHpydyaB3VcWYhYenX18dtSvNumERY9)
[MIRROR V1.0.6](https://bin.disroot.org/?6c7b4774108b0c1c#GQPst46zjAYidndmNvytforX7MK2LyHanL4d829vVcv4)
[MIRROR V1.0.7](https://bin.disroot.org/?047003637623b4fa#EwmaysciDpiDkht8xV7ce3QcR9oxFXaxSikh4cLheXBB)
[MIRROR V1.0.8](https://bin.disroot.org/?06e38bd64e6fbdad#88MYs3dmq9rSMkmocpW3NYaaG4YfSdRCc9LJnEEzqGYp)
[MIRROR V1.0.9](https://bin.disroot.org/?950218a9a7c71c66#E7Z94VCGBZozrfXYhGwKyAdMeTxuavg92tA1pn2DbrrB)
[MIRROR V1.1.0](https://bin.disroot.org/?0b0da14f31521b3a#B1c23J8xFoZZKErvGG28PgbtfgtMUcDABWmQEoSZfXgh)
[MIRROR V1.1.1](https://bin.disroot.org/?d8e2d4f0300eb5af#9Y1C8CkcH9jAmv1fh4GZs1yYpJmWCG5xG3SvDYdwnJam)
[MIRROR V1.1.2](https://bin.disroot.org/?b1059616f880925f#8ef2oscZXUkPAsJZwGfWvLPQagVAk5GgW4DyssmLvQpG)
[MIRROR V1.1.3](https://bin.disroot.org/?b02658801518aaa7#JE6CsBLWUwAnTdBqeHgeXL7QF5UExgi9rnygcfyMZjCJ)
[MIRROR V1.1.4](https://bin.disroot.org/?d31248fc44c287a0#HQELFWFEMpM9kfTZSGDXTdGFMVKTejox5CajF9Vm4Www)
[MIRROR V1.1.5](https://bin.disroot.org/?284b723ed6aad15f#8VCrrri6yRpdg3uVDSY94wpx7LYkw5uYhm4Vbhka83sM)
[MIRROR V1.1.5.1](https://bin.disroot.org/?26aaef1eff20c271#4GxQQPSDhrszTu1RmERySNVqD2fZW5GZwm3JeL1parpB)
[MIRROR V1.1.6](https://bin.disroot.org/?ae8270578cd9e081#BbcDLU49XqhecvwviHRcdfrZ4vhKdL2AMeKaT5v9oLV1)
[MIRROR V1.1.7](https://bin.disroot.org/?457e4308abe582d8#B9LJG88rmUwrGHHuCof8WpE8CXGmkc2tyrXXicEiJFWk)
[MIRROR V1.1.8](https://bin.disroot.org/?ef81486d3a5141a1#EN1YuLPqqs2FAEsvXkGbZdiWXt3vxvGTw845C4QsYmSn)
[MIRROR V1.1.9](https://bin.disroot.org/?fbcca457ac58964f#DsUCbJwgBRhnL1FK3a6VpwE5sCRNProXvk86u7RpWQM9)
---
## ライセンス
MIT
| パッケージ | 目的 |
|---|
tor | オニオンルーティングと隠れサービス |
opus-tools | 音声圧縮 (Opus コーデック) |
sox | 音声の録音と再生 (rec、play) |
socat | Tor SOCKS プロキシを介した双方向 TCP リレー |
openssl | AES-256-CBC 暗号化と復号化 |
| 切断してメニューに戻る。 |
| 音量下 ×2 | 音量ボタンで録音を切り替え(設定で「Volume PTT」を有効にする必要あり)。 |
| メッセージ | 説明 |
|---|
ID:<onion> | 発信者ID -- 送信者の.onionアドレス |
CIPHER:<name> | 送信者の暗号化方式。接続時および変更時に交換されます。 |
PTT_START | 送信者が録音を開始しました |
PTT_STOP | 送信者が録音を終了しました。音声が続くか、送信済みです |
AUDIO:<base64> | 完全な暗号化音声メッセージ |
MSG:<base64> | 暗号化テキストメッセージ |
HANGUP | 送信者が切断しています |
PING | キープアライブ信号 |
RELAY:1 | リレーの挨拶 -- 接続時にリレーから送信され、グループモードをトリガーします |
GROUP:<n> | グループサイズの更新 -- 発信者が参加または退出したときにリレーがブロードキャストします |
| 発信者数 | メッセージあたりの送信量 | 期待される体験 |
|---|
| 2--3 | 20--40KB | ほとんどの接続で信頼性あり |
| 3--5 | 40--80KB | 安定した回路では良好、モバイルデータでは遅延の可能性あり |
| 5--10 | 80--180KB | 限界に近く、送信間で顕著な遅延 |
| 10+ | 180KB+ | 信頼性が低く、大幅なキューイングとメッセージ損失の可能性 |