以前、SkyWayを利用したWebRTCのサンプルを作成したことを覚えているだろうか。
サンプルでは、以下の3つの通信方式をそれぞれ試せるようなものでした。
- FULLMESH(フルメッシュ)
- P2P
- SFU
サンプルを見てもわかる通り、公開されていたソースをパクっただけで、あまり理解していませんでした。
しかし、最近になって本格的にWebRTCアプリを作りたくなったので、少しだけ調べてみました。
P2P
まずは、よく聞くP2Pから。
P2P(Peer to Peer)はサーバーを経由せずにクライアント同士が繋がる通信方式です。
WebRTCはクライアント端末が直接通信する方式が主で、ザーバー用意しなくて良くお手軽なメリットがある反面、端末に負荷がかかるデメリットもあります。
フルメッシュ
フルメッシュとは、P2Pの複数同時通信版と言ったところでしょうか。
こちらもサーバーを経由しない上、複数のクライアント端末と通信するので、P2Pよりさらに負荷がかかってしまいます。
フルメッシュ接続による多人数通話
参加者全員に対して映像・音声ストリームを送信するため、人数が増えると端末負荷が大きくなる
SFU
SFUはサーバーを経由する通信方式で、フルメッシュより複数同時に接続できる端末が増える上、サーバーがコンテンツを処理してそれぞれのクライアントに配信してくれるので、クライアント端末の負荷が少なくなります。
ここで言うサーバーをSkyWayが用意してくれてます。
SFUを使用した多人数通話
サーバ(SFU)に対してのみ映像・音声ストリームを送信するため、フルメッシュ接続に比べて端末負荷を抑えることができる
どの通信でWebRTCを作るか?
アプリを作る際に、どのくらいの規模をターゲットにするかですね。
現在では、安いPCやスマホ、回線もそれなりのスペックがありますので、個人向けだとP2P・フルメッシュでも全然問題ないと思いますが、大規模アプリを考えているならSFUを利用した方が賢明です。
もちろん、SFUを利用すると料金が発生します。
料金の参考はこちら。
意外と安いと思います。
ちなみに筆者の場合は、1対1ならP2P、複数人で利用する場合はSFUに通信を切り替えるように作ろうと考えています。
- Original:https://minory.org/webrtc-communications.html
- Source:Minory
- Author:管理者