Hidden feature!

Cross network file sharing

https://www.sharedrop.io/rooms/<whatever>

WebRTC

Firebase

FileSystem API

WebRTC

WebRTC

SCTP

SDP

ICE

STUN

TURN

WebRTC - SCTP

Stream Control Transmission Protocol

  • reliable / unreliable
  • ordered / unordered

WebRTC - SDP

Session Description Protocol

what are my browser's media capabilities

WebRTC - ICE

Interactive Connectivity Establishment

what are my IP addresses and ports

WebRTC

WebRTC signaling

WebRTC - STUN

Session Traversal Utilities for NAT

what is my public IP address

WebRTC - TURN

Traversal Using Relays around NAT

WARNING: not peer-to-peer connection

SimpleWebRTC

        var webrtc = new WebRTC({
          localVideoEl: 'localVideo',
          remoteVideosEl: 'remoteVideos',
          autoRequestMedia: true
        });

        webrtc.on('readyToCall', function () {
          webrtc.joinRoom('My room name');
        });
      

PeerJS

      var peer = new Peer();
      var conn = peer.connect('dest-peer-id');

      conn.on('open', function () {
          // Receive messages
          conn.on('data', function (data) {
              console.log('Received', data);
          });

          // Send messages
          conn.send('Hello!');
      });
      

Firebase

Presence management

WebRTC signaling

FileSystem API

FileSystem API

Never have to store the whole file in memory

FileSystem API

FileReader

FileWriter

WebRTC

Chunking data

Chrome has send size limit of 16KB (to be removed in the future)

Data is sent in 1MB blocks - 64 x 16KB chunks

FileSystem API

ebidel/idb.filesystem.js

polyfill for Firefox that uses IndexedDB

FileSystem API

ebidel/filer.js

FileSystem API wrapper that provides UNIX-like API (ls, cp, mv)

https://www.sharedrop.io

https://github.com/cowbell/sharedrop

Images

http://xkcd.com/949/

http://support.apple.com/kb/ht4783

http://io13webrtc.appspot.com/

Thank You!