シグナリング

最終更新日

2019-05-15

シグナリングサーバについて

WebRTC では シグナリング と呼ばれる仕組みが必要になります。 あまり聞き慣れない単語ですが、 WebRTC ではよく出てくる単語です。

WebRTC の世界でのシグナリングという仕組みは、 ピアとピアが直接通信をするために事前に双方が知っている第三者経由で情報のやり取りをするという仕組みです。

ピアとピアは当たり前ですが、お互いの情報を直接やり取りする状況にありません。そのため確実に情報交換が可能になる、第三者が必要になります。

この第三者の事をシグナリングサーバーと呼びます。WebRTC を利用する場合、シグナリングサーバは基本的に必須です。

シグナリングの仕様について

実は、シグナリングの仕様は WebRTC には存在しません。つまりどんな方法でやり取りしても問題ありません。 多くのシグナリングの実装が WebSocket を利用しています。

シグナリングについて

シグナリングでは offer 、 answer 、 candidate の 3 つの単語が出てきます。

  • offer はやり取りを開始したい人が送る情報です

  • answer は offer を受信した人が返信する情報です

  • candidate はピアとピアが通信を行う経路の候補を送る情報です

offer

自分が直接送りたいデータの情報と自分ができるこの情報を SDP (Session Description Protocol) というプロトコルを利用して送ります。

SDP については別途 :doc:`SDP <sdp.rst>`_ を見てください。

answer

offer を受け取ったピアは offer の相手が送りたいデータ、相手ができることに対して、自分ができることを相手に合わせて answer を送ります。 answer にも SDP を利用します。

candidate

直接遣り取りをするためには自分の IP アドレスを相手に伝える必要があります。とはいえ自分の IP アドレスは一つだけではないかもしれません。 とにかく自分に割り当てられている IP アドレスをひたすら相手に送ります。

双方にお互いの情報が揃ったら双方向で通信が可能なペアを探し出します。詳細については :doc:`ICE <ice.rst>`_ を見てください。