low-latency
peer-to-peer
networking
in the browser
Slide 9
Slide 9 text
PeerCDN
Slide 10
Slide 10 text
uses data channels
to send files to other
current visitors
Slide 11
Slide 11 text
de-centralized
+
encrypted
=
big win for web
Slide 12
Slide 12 text
So how’s WebRTC
coming along?
Slide 13
Slide 13 text
att.js
(required modded chromium)
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
Sweet, so we’re good?!
Slide 16
Slide 16 text
no.
Slide 17
Slide 17 text
WebRTC is pretty
still pretty finicky
Slide 18
Slide 18 text
Setting up a video call
between two users...
Slide 19
Slide 19 text
- prefixed methods
- very different error types
- strings on FF
- error object chrome
- neither follows spec
- constraints (audio/video + resolution) but not in FF
- screensharing in chrome (flag)
- hard to detect failure type
- requires https or fails silently
navigator.getUserMedia
Slide 20
Slide 20 text
getUserMedia module
Slide 21
Slide 21 text
- convert stream to blob URL set as src
- chrome set “autoplay” to true
- FF you attach and then call `.play()`
- You really want to be able to mirror
and mute in one swoop.
Attaching a media stream
Slide 22
Slide 22 text
attachMediaStream module
Slide 23
Slide 23 text
- total greenfield, not spec’ed
- help users discover/pass data messages
- capabilities detection
- screensharing from chrome to FF
fails silently (to be fair, it’s flagged)
Signaling Server
Slide 24
Slide 24 text
signalmaster server
Slide 25
Slide 25 text
- prefixed
- createDataChannel
(very finicky set of options)
- SDP hack to remove default
upload limitation in chrome.
- RTCPeerConnection v. mozRTCConnection
Peer Connections
Slide 26
Slide 26 text
RTCPeerConnection module
Slide 27
Slide 27 text
- data channels not interoperable
- single video stream per connection
- screensharing requires other peer connection
- stream re-broadcasting doesn’t work (well)
- Different levels of support for TURN
Other Challenges:
Slide 28
Slide 28 text
THERE ARE
OTHER
BROWSERS!
Slide 29
Slide 29 text
First time (that i know of) where
direct-interoperability is needed
between browsers
Slide 30
Slide 30 text
SimpleWebRTC
var webrtc = new SimpleWebRTC({
localVideoEl: 'localVideo',
remoteVideosEl: 'remotesVideos',
autoRequestMedia: true
});
webrtc.on('readyToCall', function () {
webrtc.joinRoom('room name');
});