videocalling
Illustration of シグナリング(Signaling) in video calling

シグナリング(Signaling)

技術

接続確立前にWebRTCピア間の通信を調整するプロセス。

シグナリングとは?

シグナリングとは、2つのWebRTCピアが互いを発見し、直接のP2P接続を確立するために必要な情報を交換するプロセスです。シグナリングは、誰かと会う約束をする最初の電話のようなもので、まだミーティング中ではなく、場所と時間を調整しているだけです。

WebRTCはシグナリングの方法を意図的に規定していません。WebSocket、HTTPロングポーリング、Server-Sent Eventsなどを使用できます。この柔軟性により、開発者はWebRTCを既存のアーキテクチャに統合できます。

オファー/アンサーの流れ

  1. ピアAがオファーを作成createOffer()を呼び出してSDPオファーを生成(サポートされるコーデック、メディア機能、暗号化鍵を含む)
  2. シグナリングチャネルで送信:オファーをシグナリングチャネル経由でピアBに送信
  3. ピアBがオファーを受信・処理:リモート記述として設定
  4. ピアBがアンサーを作成createAnswer()で互換性のあるコーデックを選択しSDPアンサーを生成
  5. アンサーの送信:シグナリングチャネル経由でピアAに返送
  6. ICE候補の交換:両ピアがICE候補を発見次第、シグナリング経由で交換(Trickle ICE)
  7. 接続確立:ICEが接続性チェックを行い、最適なP2Pパスを確立

一般的なシグナリングプロトコル

  • WebSocket(最も一般的):全二重、リアルタイム、双方向通信。WebRTCシグナリングのデファクトスタンダード
  • HTTP(REST + ポーリングまたはSSE):WebSocketをブロックする制限的な企業ファイアウォールを通過
  • WHIP/WHEP:WebRTCのHTTPベースシグナリングの標準化。ブロードキャストシナリオに最適

まとめ

シグナリングはWebRTCの縁の下の振付師です。メディアを転送しませんが、初期ハンドシェイクを調整することでP2P接続全体を可能にします。WebRTCのシグナリング標準化の意図的な欠如は弱点ではなく強みです。既存の認証、メッセージングインフラストラクチャ、ビジネスロジックを再利用できます。