Building simplicidade.org: notes, projects, and occasional rants

WebRTC

WebRTC provides the API’s to implement P2P connections between clients, like browsers.

Probably the best article on WebRTS is this: WebRTC in the real world: STUN, TURN and signaling - the signal level is extremely high.

Below I keep a bunch of links to specs and software that I’ve looked at.

Browser Support

Support for WebRTC in browsers is restricted to Chrome and Firefox, but both Edge and Safari have it under development.

Personally, I believe that in the 20172018 we should be able to use this technology with ease.

Code examples

WebRTC and Socket.IO

Most examples of WebRTC focus on audio and video, but the RTCDataChannel is also very interesting because it allows a “socket-io”-like interface directly between peers. In fact, there is even a Socket.IO P2P project already, so you can use the same API everywhere.

Infrastructure

If you plan on using WebRTC, you might want to have your own STUN/TURN servers, with proper authentication. If you plan on multi-user video, then a Multipoint Control Unit is a wise investment.

Ready-to-use Conference software

  • Spreed WebRTC: all-in-one solution for multi-user video conferencing. Core server in Go, client powered by Node.js and Websockets. Includes support for Desktop Sharing with Chrome and Firefox. Requires a separate TURN server, but recommends CoTurn (see next section). They sell a turn-key hardware/software solution, Spreedbox, that looks really good…;
  • BigBlueButton - current version only uses WebRTC for audio. There is a HTML5-client in the works with full WebRTC support. Probable the most tailored to classrooms, lots of useful tools (chat, presentations with annotations, voice control, pools, audio, video, SIP dial-in). I’ve been using this software since 2010-ish;
  • BlueJeans: Comercial, doens’t mention price, so you probably can’t afford it, but impressive set of supported software.

STUN/TURN servers

In case you need a STUN/TURN server, your best bet is probably coturn. It has everything that you’ll ever need.

An (worse) alternative is restund. The main developer doesn’t have a repository available.

A forked version or restund is available, and there is a simple Docker image for restund that you can use to get quickly up-to-speed.

Multipoint Control Unit and Selective Forwarding Units

Apart from commercial MCU’s (like the Cisco MCU), there are a couple of OSS projects you can look at:

Other providers: