
シグナリング(Signaling)
技術接続確立前にWebRTCピア間の通信を調整するプロセス。
シグナリングとは?
シグナリングとは、2つのWebRTCピアが互いを発見し、直接のP2P接続を確立するために必要な情報を交換するプロセスです。シグナリングは、誰かと会う約束をする最初の電話のようなもので、まだミーティング中ではなく、場所と時間を調整しているだけです。
WebRTCはシグナリングの方法を意図的に規定していません。WebSocket、HTTPロングポーリング、Server-Sent Eventsなどを使用できます。この柔軟性により、開発者はWebRTCを既存のアーキテクチャに統合できます。
オファー/アンサーの流れ
- ピアAがオファーを作成:
createOffer()を呼び出してSDPオファーを生成(サポートされるコーデック、メディア機能、暗号化鍵を含む) - シグナリングチャネルで送信:オファーをシグナリングチャネル経由でピアBに送信
- ピアBがオファーを受信・処理:リモート記述として設定
- ピアBがアンサーを作成:
createAnswer()で互換性のあるコーデックを選択しSDPアンサーを生成 - アンサーの送信:シグナリングチャネル経由でピアAに返送
- ICE候補の交換:両ピアがICE候補を発見次第、シグナリング経由で交換(Trickle ICE)
- 接続確立:ICEが接続性チェックを行い、最適なP2Pパスを確立
一般的なシグナリングプロトコル
- WebSocket(最も一般的):全二重、リアルタイム、双方向通信。WebRTCシグナリングのデファクトスタンダード
- HTTP(REST + ポーリングまたはSSE):WebSocketをブロックする制限的な企業ファイアウォールを通過
- WHIP/WHEP:WebRTCのHTTPベースシグナリングの標準化。ブロードキャストシナリオに最適
まとめ
シグナリングはWebRTCの縁の下の振付師です。メディアを転送しませんが、初期ハンドシェイクを調整することでP2P接続全体を可能にします。WebRTCのシグナリング標準化の意図的な欠如は弱点ではなく強みです。既存の認証、メッセージングインフラストラクチャ、ビジネスロジックを再利用できます。