狠狠撸
Submit Search
奥别产搁罢颁と笔别别谤.箩蝉を使った実装
?
16 likes
?
7,661 views
Yuta Suzuki
Follow
9/5にLIGさんと勉強会をさせて頂きました。 その際に発表した資料です。 発表ではDEMOがありましたが、この資料では省かせて頂きました。
Read less
Read more
1 of 52
Download now
Downloaded 45 times
More Related Content
奥别产搁罢颁と笔别别谤.箩蝉を使った実装
2.
Profile yuta suzuki
Trifort inc. developer(?) HTML / CSS / Javascript Travel
3.
Agenda 奥别产搁罢颁の概要 ブラウザ間通信の手順
を使った実装 まとめ
4.
奥别产搁罢颁の概要
5.
WebRTCはリアルタイムWebの 新しいカタチ
6.
従来の通信方法 WebRTC 概要
7.
従来の通信方法 WebRTC 概要
テキストデータ 音声?ビデオ
8.
リアルタイム?コミュニケーション RTCはReal Time
Communicationの略 ブラウザからカメラやマイクを使用 ブラウザ間の双方通信(P2P)を可能にする 概要
9.
対応ブラウザ非対応ブラウザ 2014年8月時点 対応ブラウザ
10.
よくある勘违い
11.
何もしなくても、そこのページに入ったら 自動で通信が開始するんだよね? Case
1 Q
12.
after Case 1
A アクセス時に乱数のidが発行され、それを 相手のブラウザに認識させる必要があります。
13.
Case 2 Q
ブラウザ同士で通信できるってことは サーバーとかネットワークの知識は必要ない?
14.
そんなことはなく、サーバー、 ネットワークの知識は必要です。 Case
2 A
15.
ネットワークのお话
16.
奥别产搁罢颁はネットワーク上の问题を抱えています
17.
WebRTCのネットワーク問題 PCはNAT配下のプライベートIPアドレスを持つマシンで動いています。その為 そのままでは相手がどこにいるのか分かりません。
プライベートIPアドレスはルーターが割り振っています。 ?
18.
NAT(Network Address Translation)
プライベートIPアドレス 192.168.0.15 グローバルIPアドレス 192.168.0.15 203.0.113.100 PC サーバー 送信元 送信先 203.0.113.100 ルーター サーバー 送信元 送信先 203.0.113.100 198.51.100.20 198.51.100.20
19.
NAT(Network Address Translation)
203.0.113.100 プライベートIPアドレス 192.168.0.15 サーバー グローバルIPアドレス 192.168.0.15 PC 送信元 送信先 203.0.113.100 サーバー ルーター 送信元 送信先 203.0.113.100 198.51.100.20 198.51.100.20
20.
NAT(Network Address Translation)
プライベートIPアドレス? なに、それ???
21.
それを解决する為に、2つのサーバーを使用します
22.
ICEサーバー Signalingサーバー
23.
ICEサーバーとは? ICEはInteractive Connectivity
Establishmentの略です。 NATを越える為に使用するサーバー。 ICEサーバーには、STUNサーバー/TURNサーバーがあります。
24.
STUNサーバー STUNサーバーはSimple Traversal
of UDP through NATsの略 でNATを突破する為に使用するサーバーです。 自分の外側から見た情報(グローバルIP、プライベートIPやポートなど) を取得することができます。 TURNサーバー TURNサーバーはTraversal Using Relay NATの略でSTUNサーバ が繋がらなかった場合に補助として設定している事が多いです。 しかし、パケットがリレーする方式で通信するのでP2P通信ではなく なってしまいます。その為、CPUやネットワークの負荷が高くなりや すい傾向があります。
25.
ICEサーバー Signalingサーバー
26.
Signalingサーバーとは? 相手を見つける為のマッチング用のサーバー。 今回はnode.js、WebSocketで実装。
27.
ブラウザ间通信までの手顺
28.
ICEサーバー (STUNサーバー) Signalingサーバー
(WebSocket)
29.
ICEサーバー (STUNサーバー) 自分の
Signalingサーバー (WebSocket) ネットワーク情報 を要求!
30.
ICEサーバー (STUNサーバー) 自分の
Signalingサーバー (WebSocket) ネットワーク情報 を取得!
31.
ICEサーバー (STUNサーバー) Signalingサーバー
(WebSocket) 接続候補情報 を送信!
32.
ICEサーバー (STUNサーバー) Signalingサーバー
(WebSocket) 接続候補情報 を取得!
33.
ICEサーバー (STUNサーバー) Signalingサーバー
(WebSocket) 接続候補情報 を取得!
34.
ICEサーバー (STUNサーバー) Signalingサーバー
(WebSocket) 接続候補情報 を取得! P2P通信開始の オファーを送信!
35.
ICEサーバー (STUNサーバー) Signalingサーバー
(WebSocket) 接続候補情報 オファをー取を得受!信!
36.
ICEサーバー (STUNサーバー) Signalingサーバー
(WebSocket) 接続候補情報 を取得! P2P通信開始の 許可を送信!
37.
ICEサーバー (STUNサーバー) Signalingサーバー
(WebSocket) 接続候補情報 を取得! 許可を受信!
38.
ICEサーバー (STUNサーバー) Signalingサーバー
(WebSocket) 接続候補情報 を取得! P2P通信開始!
39.
を使った実装
40.
とは? WebRTCを利用したP2Pのデータ、ビデオ、 オーディオ通信を簡単に実現することができるライブラリです。
通信状態に影響される繊細な処理を吸収 P2Pの接続できるまでの複雑な処理を簡略化 NTTがこのpeer.jsをベースにしたSkyWayという プラットフォームを開発 最新のVer.は0.3.9
41.
の取得
44.
Peerオブジェクトの作成 var peer
= new Peer({ key: 'xxxxxxxxxx', config: { 'iceServers': [ { url: ‘stun:stun.l.google.com:19302'} ] } });
45.
メディアへの接続 navigator.getUserMedia =
navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia; navigator.getUserMedia( {audio: true, video: true}, function success(stream){ var target = document.getElementById("my-video"); target.src = /slideshow/webrtc-38809711/38809711/URL.createObjectURL(stream); window.localStream = stream; }, function error(){ console.log("mediaに接続できません"); } );
46.
P2Pの接続開始 peer.on('open', function(){
socket.emit("sendId",peer.id); });
47.
先に接続している人はsocketで受信 socket.on('connect', function()
{ socket.on(“getId",function(id){ var remoteCall = peer.call(id, window.localStream); remoteCall.on('stream', function(stream){ var video = '<li data-id=/slideshow/webrtc-38809711/38809711/"& + id + '"><video autoplay src=/slideshow/webrtc-38809711/38809711/"& + URL.createObjectURL(stream) + '"></ video></li>'; element.innerHTML += video; }); }); });
48.
P2Pのエラーイベント peer.on('error', function(evt){
console.log(evt); });
49.
まとめ
50.
まとめ ブラウザ通信は接続してから行われます。 メディアを起動して接続するまでの仕組みを
含めて、WebRTCです。 WebSocketとWebRTCはよく比較対象に されますが、用途が違います。 IE、Safariの動きに注目。
51.
ご清聴ありがとうございました。
52.
参考 ■ W3C
http://www.w3.org/TR/webrtc/ ! ■ HTML5Experts.jp http://html5experts.jp/mganeko/5554/ ! ■ HTML5rocks http://www.html5rocks.com/ja/tutorials/webrtc/datachannels/ ! ■ tjun memo http://tjun.org/blog/2013/12/webrtc_p2p/ ! ■ NullPointer's Blog http://paulownia.hatenablog.com/entry/20120506/1336324323 ! ■ Publickey http://www.publickey1.jp/blog/12/webrtchtml5_conference_2012.html ! ■ WebブラウザでP 2 Pを実現する WebRTCのAPIと周辺技術 http://www.slideshare.net/yoshiakisugimoto9/webrtc-slide
Download