弊社でWebRTCを扱う案件がありましたので、概略をまとめてみました。
〇概要
WebRTCとは、Web RealTime Communication の略で、ビデオ双方向通信、音声チャットなどのリアルタイム通信をプラグインなしでブラウザだけで実現する技術です。
今までは、独自のリアルタイム通信をSkype、Line等が行っていましたが、オープンソースであり、ライセンス使用料が不要なWebRTCが登場した事で誰でもリアルタイム通信を行えるようになりました。
技術を3つに分けて紹介します。 ①音声と映像のコーデック(形式)、②ネットワーク機器(NAT)を越えて直接通信する手順、③暗号化、到達・順序保障、流量を実現する通信手順(プロトコル)
導入の敷居は低いですが、本格的に使いこなすのは難易度が高いと言われています。
〇仕組み
・大量のデータを高速に送信する為、UDP通信を利用している
・通信はデフォルト暗号化されており、データグラム向けのTLSであるDTLS を採用している
・WebRTC にはメディアチャネルとデータチャネルの2つある
通常のP2PでSkypeのようにやり取りする場合は、音声と映像をデータ通信が行えるメディアチャネルを使用する
メディアチャネルではセキュアなリアルタイム通信(SRTP)が行われる。暗号化はAES(共通鍵暗号化)、鍵交換にDTLSを用いる。
・通信を統一するためのプロトコルとして SDP が採用されている
〇対応しているブラウザ
・FireFox
・Chrome
・Safariは、Safari11以降に対応される予定。
・Edge、InternetExploreはまだ未確認です。
〇導入後のメンテナンス
・繋がらない人のサポート対応が必要になります。これは技術的なメーリングリストを日々確認しておけば問題ないです。
・最新ブラウザへの追従がとても大変です。この対応は、実際に運用してノウハウをためる以外方法はありません。
SkyWayなどのプラットフォームを利用しているからメンテナンスは不要という事ではないので作る方は覚悟しておいて下さい(笑)
〇必要な環境
シグナリングサーバ・・・通信相手を識別、発見するサーバ
ICEサーバ
STUNサーバ・・・NAT 越えをするために最低限必要なサーバ
TURNサーバ・・・接続確率を上げるために必要
STUN、TURNは、WebRTCクライアント同士がP2Pネットワークを介して繋がるために必要なサーバです。
80%はTURNが無くても繋がるが、10%はTURN-UDPがあればつながる。
残り10%はTURN-TCP、TURN-TLSがあれば繋がるという話があるようです。
〇ビジネス用途
・カスタマサポート
・Web会議
・オンライン学習
・IoT
・CDN
・コンタクトセンタ
〇実装するには?
弊社にお問合せ頂ければ、WebRTC技術に明るい人材が相談にのります。
ある物を利用すれば数十万円レベルで作れるレベルです。