ページ

2013年10月5日土曜日

WebRTC調査 1


WebRTC = Web Real-Time Communications

・ブラウザ上でリアルタイムコミュニケーションを実現する為の仕様
・双方向性のあるコミュニケーションを必要とする様々なアプリ開発
 ビデオ/音声チャット
 テキストの共同編集
 ゲーム等
 
 
 P2P通信を利用して端末間の相互接続が可能
 サーバを経由しない?
 ※でも最初ネゴシエーションする為のサーバは必要
    そしてNAT越えする場合(ルータのNAT越えとかでなくトンネルサーバ)も必要
        http://www.infoq.com/jp/news/2013/06/wrangling-webrtc
 UDPプロトコル
 
 アーキテクチャ
 1Media Capture and Streams (getUserMedia)
   ・ローカルのカメラやマイクからストリームデータを取得、加工も可能
   ・通信時のストリーム定義
 2WebRTC 1.0
 
 getUserMedia
  webkitでは・・・
   canvasと連携して画像処理
   web audio apiと連携して音声処理
   顔認識、ジェスチャー
 
  WebRTC 1.0 WebRTC Between Browsers
  ・主にP2P通信の為の仕様が定義
  ・端末間の相互接続の為のネゴシエーションを行う
  ・P2Pによるデータ通信(Data channel)などもある
  ・APIは複雑で難解?

  P2P通信を始めるための事前準備
  ・最初のネゴシエーションを仲介する為のサーバを用意WebサーバでオK
  ・NAT越えするためのICEサーバを用意


  NAT traversal (NAT越え)の問題
  ・P2P通信を開始する為にはお互いの端末のグローバルアドレスを知る必要がある
  ・しかし・・各端末お前にはファイアウォールなどがあるので、一筋縄ではいかないごた
  ・そのために必要なのがICE
  ・ICEで取得したグローバルIPとポート番号を通信するホスト間で交換

  ICE
  ・STUNやTURNなどのNAT越えの手順をよろしくやってくれるもの
  ・STUNでだめならTURNで

 STUN (Simple Traversal of UDP through NATs)
 ・NAT越えの方法の一つ
 ・通信するホストがSTUNサーバにUDP接続を行う
 ・NATが割り当てたグローバルIPとポート番号を取得
 ・STUNで対応できるNATはフルコーン型、制御コーン型、ポート制御コーン型の3つ

 TURN (Traversal Using Relay NAT)
 ・NAT越えの方法の一つ
 ・対称型や多段NATでもオK
 ・すべての通信をTURNを経由して行うので、高負荷。高コスト

 APIのほとんどがこの部分を解決する為のネゴシエーション


 ライブラリがあるっぽい
 1. simpleWebRTC
     公式ホームページ
     http://lab.adn-mobasia.net/?p=1887
 2. Peer.js
    ・Data Channelのみサポート
    ・ブローカーサーバーが提供されている(API Keyの申請が必要)
    ・connect()メソッドでP2Pのネゴシエーションを完了
     公式ホームページ
     個人ブログ
 3 webRTC.io
    http://www.moongift.jp/2012/10/20121019-2/

0 件のコメント:

コメントを投稿