サイトアイコン IT NEWS

WebRTCに使われる3つの通信方式について調べてみた

webrtc-communications

以前、SkyWayを利用したWebRTCのサンプルを作成したことを覚えているだろうか。
サンプルでは、以下の3つ通信方式をそれぞれ試せるようなものでした。

  • FULLMESH(フルメッシュ)
  • P2P
  • SFU

サンプルを見てもわかる通り、公開されていたソースをパクっただけで、あまり理解していませんでした。
しかし、最近になって本格的にWebRTCアプリを作りたくなったので、少しだけ調べてみました。

P2P

まずは、よく聞くP2Pから。
P2PPeer to Peer)はサーバーを経由せずにクライアント同士が繋がる通信方式です。
WebRTCクライアント端末直接通信する方式が主で、ザーバー用意しなくて良くお手軽なメリットがある反面、端末負荷がかかるデメリットもあります。

フルメッシュ

フルメッシュとは、P2P複数同時通信版と言ったところでしょうか。
こちらもサーバーを経由しない上、複数のクライアント端末と通信するので、P2Pよりさらに負荷がかかってしまいます。


フルメッシュ接続による多人数通話
参加者全員に対して映像・音声ストリームを送信するため、人数が増えると端末負荷が大きくなる

SFU

SFUサーバーを経由する通信方式で、フルメッシュより複数同時に接続できる端末が増える上、サーバーがコンテンツを処理してそれぞれのクライアントに配信してくれるので、クライアント端末負荷が少なくなります。
ここで言うサーバーSkyWayが用意してくれてます。


SFUを使用した多人数通話
サーバ(SFU)に対してのみ映像・音声ストリームを送信するため、フルメッシュ接続に比べて端末負荷を抑えることができる

どの通信でWebRTCを作るか?

アプリを作る際に、どのくらいの規模ターゲットにするかですね。
現在では、安いPCスマホ回線もそれなりのスペックがありますので、個人向けだとP2Pフルメッシュでも全然問題ないと思いますが、大規模アプリを考えているならSFUを利用した方が賢明です。
もちろん、SFUを利用すると料金が発生します。
料金の参考はこちら。

意外と安いと思います。
ちなみに筆者の場合は、1対1ならP2P複数人で利用する場合はSFUに通信を切り替えるように作ろうと考えています。

モバイルバージョンを終了