がねこまさし

シグナリングサーバーを動かそう ーWebRTC入門2016

連載: WebRTC入門2016 (3)

 2014WebRTC使3P2P


WebRTCP2P


SDP

ICE candidate


2


Node.js使

Chrome

Node.js


WebSocket使WebSocketNode.js使使Node.js 4.4.7 LTS使

Node.jsWebSocket/  sudo

以前の連載ではsocket.ioを使いましたが、今回はよりプリミティブなwsを使っています。

シグナリングサーバーを動かそう

次のコードを好きなファイル名で保存してください。(例えば signaling.js)

ポート番号は必要に応じて変更してください。起動するにはコマンドプロンプト/ターミナルから、 次のコマンドを実行します。



Chrome使


Node.jsChromesimple message server simple_message_server_store ChromeChromeWindows, MaxOS X, Linux, ChromeOS

 ws://localhost:3001/ [restart]


WebSocketJavaScriptURL使

次に、WebSocketでメッセージを受け取った場合の処理を追加します。

JSONテキストからオブジェクトを復元し、typeに応じて前回用意したsetOffer()/setAnswer()を呼び出し、RTCPeerConnectionに渡しています。

SDPの送信

Offer/AnswerのSDPの送信も、WebSocket経由で行います。前回要したsendSdp()を次のように変更します。


  SDPJSONWebSocket


ChromeFirefox2HTMLChromeFirefox

WebGitHub Pages 


GitHub Pages  ws_signaling_1to1_vanilla.html

http:// Firefox


GitHub  ws_signaling_1to1_vanilla.html

(1) 


[Start Video]
ws_signaling_startvideo

(2) 


[Connect](3)SDPICE candidate(4)
ws_signaling_connect

Trickle ICE 使


ICE candidateTrickle ICE 使
hand2016_trickle ICE candidateP2P2014ICE candidateP2P

SDP


Offer SDP/Answer SDP

ICE candidateも、すぐに交換する

ICE candidateを収集した際も、すぐに送るように変更します。

合わせてICE candidateをWebSocket経由で受け取った場合の処理も追加しましょう。相手からICE candidateを受け取ったら、その度にRTCPeerConnection.addIceCandidate()で覚えさせます。


 

Trickle ICE


Vanilla ICEChromeFirefox2HTML[Start Video][Connect]



GitHub Pages/GitHub


GitHub Pages  ws_signaling_1to1_trickle.html

http:// Firefoxlocalhost


GitHub  ws_signaling_1to1_trickle.html

2PC


2PCPC


IP 192.168.0.2  192.168.0.3 2PC

(192.168.0.2):8080Web:3001Node.js
2pc_firefox

FirefoxURLChrome


ChromegetUserMedia()http://

http://localhost/ 
2pc_chrome




 https:// Web

 wss:// 使


WebWeb
2pc_chrome_force


Node.jsWebSocket使11

WebRTC


WebRTC2016WebRTC(20166

getUserMeida



navigator.mediaDevices.getUserMedia() 

API navigator.getUserMedia() Firefox




Promise

Firefox, Edge Chrome



Firefoxmoz

RTCPeerConnection, RTCSessionDescription, RTCIceCandidate

mozRTCPeerConnection, mozRTCSessionDescription, mozRTCIceCandidate 


Chrome

 webkitRTCPeerConnection

 RTCSessionDescription, RTCIceCandidate


RTCPeerConnection



Promise

createOffer(), createAnswer()

setLocalDescription(), setRemoteDescription()


ontrack()onaddstream()

FirefoxChrome




週間PVランキング

新着記事

Powered byNTT Communications

tag list

アクセシビリティ イベント エンタープライズ デザイン ハイブリッド パフォーマンス ブラウザ プログラミング マークアップ モバイル 海外 高速化 Angular2 AngularJS Chrome Cordova CSS de:code ECMAScript Edge Firefox Google Google I/O 2014 HTML5 Conference 2013 html5j IoT JavaScript Microsoft Node.js Polymer Progressive Web Apps React Safari SkyWay TypeScript UI UX W3C W3C仕様 Webアプリ Web Components WebGL WebRTC WebSocket WebVR