WebRTCライブラリをインストール
- Webアプリ: SimpleWebRTCやPeerJSを使用。
- ネイティブアプリ: Pion(Goライブラリ)や
libwebrtc
を使用。
シグナリングサーバーのセットアップ
- WebRTCの接続にはシグナリングサーバーが必要です。
- WebSocketやFirebaseを使用してシグナリングを実装します。
STUN/TURNサーバーの設定
- 公開IPアドレスでの接続を可能にするため、Google STUNサーバーやオープンなTURNサーバーを利用します。
アイコン名を入力
1. STUNサーバー (Session Traversal Utilities for NAT)
STUNサーバーは、NAT(ネットワークアドレス変換)越しに通信する際に必要なサーバーです。
役割:
- クライアントが自分のパブリックIPアドレスとポートを取得するのを支援します。
- NAT環境では、端末のプライベートIPアドレスがグローバルにアクセス可能なパブリックIPアドレスに変換されます。このとき、クライアントが自身のパブリックIPとポートを知るためにSTUNサーバーを利用します。
利用されるケース:
- 通常のP2P通信でNAT越えが可能な場合に役立ちます。
- 例: ユーザー間で直接通信できる場合。
プロトコル:
- STUNはUDPを主に使用しますが、TCPでも動作可能です。
2. TURNサーバー (Traversal Using Relays around NAT)
TURNサーバーは、STUNサーバーで直接通信できない場合の代替手段として使用されます。
役割:
- リレーサーバーとして動作し、クライアント間の通信を中継します。
- NATやファイアウォールが厳しく、P2P接続が確立できない場合に、TURNサーバーを介してデータを送受信します。
利用されるケース:
- 通信相手が非常に制限の厳しいネットワーク(企業のファイアウォールなど)にいる場合。
- 例: 動画通話のP2P接続が失敗した場合、TURNサーバーを使用して音声や映像を中継。
注意点:
- TURNサーバーは大量の帯域を消費するため、運用コストが高くなる可能性があります。
3. シグナリングサーバー
シグナリングサーバーは、WebRTCで通信を開始するために必要な初期情報(シグナリングデータ)を交換する役割を持ちます。
役割:
- 通信の初期交渉を行う。
- WebRTC通信を開始するために必要な情報をピア間で交換する手段を提供します。例として以下のデータを交換します:
- SDP (Session Description Protocol) 情報: メディアストリームの形式、暗号化情報など。
- ICE (Interactive Connectivity Establishment) 候補: クライアントが接続可能なIPアドレスとポートのリスト。
- 通信経路の確立を補助します。
利用されるケース:
- 通信開始前に必要な初期情報を交換するため、WebRTCの通信では必須です。
注意点:
- シグナリングサーバー自体はP2P通信には関与しないため、音声や映像データを中継しません。
実装例:
- シグナリングサーバーは、一般的にWebSocketやHTTPベースで実装されます。