"Imagine a world where your phone, TV and computer could all communicate on a common platform. Imagine it was easy to add video chat and peer-to-peer data sharing to your web application. That's the vision of WebRTC." — Sam Dutton
WebRTC (Web Real-Time Communication) is an API drafted by the World Wide Web Consortium (W3C) that supports browser-to-browser applications for voice calling, video chat, and P2P file sharing without plugins.
In this workshop at LXJS 2014, we will cover:
- What is WebRTC?
- What types of apps and features does WebRTC enable you to build?
- How to create WebRTC video/voice chat apps
- How to create peer-to-peer connections in the browser
- How to use
getUserMedia
to capture the user's webcam and microphone - How the "signaling process" allows us to connect two peers, and why it's necessary
- How to write server-side (node.js) code to facilitate the signaling process
- How to create WebRTC data channel apps
- How to send binary and text data
- How to create reliable (tcp-like) and unreliable (udp-like) data channels
- How to handle browser differences
Check out some of the real-world products that make use of WebRTC:
- Simple video chat - Talky / AppRTC
- Simple file sharing - ShareFest
- Peer-to-peer CDN - PeerCDN / Peer5 / Swarmify / StreamRoot
- Browse websites together with friends - TogetherJS
- Chromecast - browser tab casting
- Amazon Mayday - live kindle support
- Snapchat - push-to-start video chat in a native app
Mad scientists are pushing WebRTC to its limits. Check out these crazy projects:
- Peer-Server - a server backend in the browser
- WebTorrent - a streaming bittorrent client in the browser
- WebRTC Plugin for old browsers - so you can make WebRTC work on IE9/10/11 and Safari
Great! Here's how to get ready.
In order to prepare for this workshop, you should read the following articles before arriving at LXJS! If you have a question, please open an issue and we will be glad to answer. You might be helping other participants!
- Check out talky.io and sharefest.me
- Check out the first WebRTC call ever made. Historical!
- Read Getting Started with WebRTC
- Watch Google I/O 2014 WebRTC presentation
- Complete activities in "WebRTC Voodoo" workshopper -- coming soon...
These are not required, but if you want to hack on WebRTC code before you get to LXJS, you should check out the following links (with sample code!)
I'll be your trainer! :) I am currently building WebTorrent, a streaming BitTorrent client for the browser, powered by WebRTC. Before that, I built PeerCDN, a peer-to-peer content delivery network to makes sites faster and cheaper (which was acquired by Yahoo). Check out my blog at feross.org.
I'm one of the people building Talky, one of the first full-mesh multi-user conferences built with WebRTC, and maintaining the SimpleWebRTC stack.
- Joaquim Serafim - joaquimserafim
- Igor Soarez - soarez
- Pierre Ozoux - pierreozoux
- Luis Naia - darkbls
- John Brett - johnbrett
- David McMullin - davecocoa
- Thomas Parisot - oncletom
- Frederic Hemberger - fhemberger
- George Shank - taterbase
- Dominykas Blyžė - dymonaz
- Jean Carlos Meninno - eth0lo
- João Nelas - adagios
- Luis Confraria - luisbug
- Ricardo Tomasi - ricardobeat
- James Wood - jamesjwood
- Sebastian Golasch - asciidisco
- Ricardo Melo - rjsmelo
- João Reis - joao-reis
- J Oates - joates
- Zoltan Feher - zkiiito
- Ricardo Soares - rsoares
- Gábor Balázs - balazsgabor
- Miguel Coquet - mcoquet
- Daniel Wellman - danwellman
- Matthias Knoll - kohlikohl
- Jorge Dias - diasjorge
- Pedro Melo Pereira - pmelopereira
- Matteo Collina - mcollina
- Tracy Hinds - hackygolucky
- Charlie Robbins - indexzero
- Ricardo Correia - extravaganza47
- Pedro Jorge Santos - baldasman
- João Fernandes - joaoflf
- Mauro Pompilio - malditogeek
- Mate Nadasdi - matenadasdi
- Andre Duarte - onemanclapping
- Gergely Nemeth - gergelyke
- Ana Castanho - anarcastanho
- Carlos Timóteo - ctimoteo
- Igor Soarez - soarez
- Rogério Vicente - rogeriopvl
- David Cruz - dcruz
- João Jerónimo - joaojeronimo
- Miguel Serrano - miguelvps
- Robert Kowalski - robertkowalski
- Abel Soares - abelsoares
- Matej Nemcek - yangwao
- Alexandre Campos - axfcampos
- Franz Enzenhofer - franzenzenhofer
- Nuno Rosa - yarcub
- David Bruant - DavidBruant
- Paulo Miranda - pauloabmiranda
- Tim Park - timfpark
- Nuno Costa - naflcosta
- Dominic Lüchinger - dol
- Max Gfeller - MaxGfeller
- Tom Cartwright - tomcartwrightuk
- Manuel Cajada - cajadas
- Rui Patinha - rfp
- Luke Bond - lukebond
- Mike Brevoort - mbrevoort
- Kevin Sawicki - kevinsawicki
- Marco Ferreira - xpt0
- Sandro Maio - sandromaio
- Luís Ferreira - zamith
- Miguel Palhas - naps62
- Nelson Fonseca - nlfonseca
- Tiago Duque - bikerpower
- Jorge Monteiro - jorgemonteiro
- Bruno Abrantes - inf0rmer
- Leonardo Aretakis - leoaretakis
- Ronaldo Sousa - ronaldofs
- Gabriel Poça - gabrielpoca
- Nathan Sobo - nathansobo
- Sugendran Ganess - sugendran
- Andre Duarte - onemanclapping
- Thiago Dantas - tdantas
- Yacine Rezgui - yrezgui
- Pedro Nunes - pmiguelrn