Internet of Things

WebRTC: Moving Real-Time Communication into the Web Browser

By: Dan York

Date: July 1, 2013

line break image

Imagine that you could open your web browser, click on a link or a button, and start a voice/video conversation with a friend or play a multiplayer game without requiring the installation of an external plugin—no Flash, no Java, no any other plugin technology. Now imagine that this same conversation or game involves high-quality, wideband audio, HD video; has a chat component, as well as a way to share data; and is entirely secured by encryption.

From an implementation point of view, imagine that this could be done in the web page with only a few lines of JavaScript.

Now, stop imagining. Because this is exactly what is possible today in the work of multiple standards and developments efforts that fall under the overall name of “WebRTC”.

With WebRTC, real-time communications (RTC) capabilities are being built directly into web browsers. For those who remember the very early days of the Web, there was a time in 1993 when the Mosaic browser was released with the ability to add images to a web page. Suddenly the Web went from being a text-only medium to having a visual component. For the first time you could have both text and images on the same page, and the Web changed dramatically and became what we know today.

Now, 20 years later, browser vendors are adding a standardized component that enables real-time communications via voice, video, chat, and data exchange. At the time of this article, this RTC layer is already available in Google Chrome, Mozilla Firefox, Opera, and even the Google Chrome Beta for Android. Microsoft is working on implementing a version of WebRTC in Internet Explorer, and other vendors and startups are providing WebRTC-enabled browsers, as well.

We’ve had voice, video, chat, and gaming in web browsers in the past, of course, but they’ve typically required installation of some type of plugin. Even then, you could only communicate with people who also had installed that same plugin. And if you switched to a different computer or browser you had to reinstall the plugin to use it again. The actual plugins have had various security challenges, and generally have not provided a seamless user experience.

With WebRTC, all of that moves into the web browser itself and is exposed to developers through a simple set of JavaScript APIs.

The beauty of this approach is that WebRTC is enabling “regular” web developers to  start building applications that incorporate voice, video, chat, and data collaboration. Developers no longer need a deep understanding of voice-over-IP (VoIP) or telecommunications to make WebRTC apps. In fact, there are now many WebRTC-related services that enable a developer to simply copy and paste some JavaScript code into their web page to get started.

The result of all of this has been an explosion of new WebRTC applications, services and startups. A quick web search will show you the vast range of sites related to WebRTC. A fascinating aspect is that developers have already moved beyond simple voice and video calls and into using WebRTC components for games, peer-to-peer streaming, and even browser-based content distribution networks (CDNs). Now that the building blocks are out there it will be interesting to see what developers start creating.

From a standardization point of view, what we broadly call “WebRTC” is being standardized in both the IETF and the W3C. Essentially, the RTCWEB working group within the IETF is standardizing the protocols and mechanisms used in the RTC communication between the browsers while the WebRTC working group within the W3C is standardizing the APIs used by developers to communicate with the RTC components inside the browsers.

To learn more about the work of the RTCWEB working group, you may want to start with these Internet Drafts:

  • draft-ietf-rtcweb-overview
  • draft-ietf-rtcweb-use-cases-and-requirements
  • draft-ietf-rtcweb-security
  • draft-ietf-rtcweb-security-arch

Other relevant drafts can be found on the RTCWEB status page at http://tools.ietf.org/wg/rtcweb/

The RTCWEB mailing list is very active and there is still a great amount of work that needs to be done. While the OPUS codec has been chosen as mandatory-to-implement for audio communication, there is a fierce and ongoing debate about standardizing a video codec. There are alternatives being proposed for some methods of signaling, and identity and firewall issues yet to be completely resolved. As new uses are found other topics will undoubtedly be raised. Some potential problems remain that could limit the success of WebRTC.

A great aspect of the RTCWEB work, however, is that we do have many instances of running code, so the debates are being fueled by actual examples and real implementations and deployments. If you get a chance to visit one of the RTCWEB working group sessions at an IETF meeting, it is highly likely that you’ll see some demonstrations along with the usual slides and discussions.

The RTCWEB working group is open to all and is a great way to start learning about how the IETF works (assuming you don’t mind a high volume of email). Combined, the work of the IETF’s RTCWEB working group, the work of the W3C’s WebRTC working group, and the active WebRTC implementations of multiple browser vendors are bringing about a new Web—one in which real-time communications are part of the core fabric available to all. It’s an exciting time and we don’t yet know what may emerge.

Learn more

IETF RTCWEB Working Group:  http://tools.ietf.org/wg/rtcweb/charters

RTCWEB Documents: http://tools.ietf.org/wg/rtcweb/

RTCWEB List: https://www.ietf.org/mailman/listinfo/rtcweb

W3C WebRTC Working Group: http://www.w3.org/2011/04/webrtc/

The following recent presentations provide excellent tutorials, demonstrations and code samples:

  • IETF RTCWEB Cochair Cullen Jennings gave a tutorial on WebRTC: http://www.youtube.com/watch?v=Yf3eNciKddc
  • Google’s Justin Uberti presented WebRTC at Google I/O: http://www.youtube.com/watch?v=p2HzZkd2A40         Slides: http://io13webrtc.appspot.com/

Google’s Chrome Team operates the website, webrtc.org, and there are very active WebRTC discussion communities in Google+, Facebook, and other social networks.