In May 2010, Google bought Global IP Solutions or GIPS, a VoIP and videoconferencingsoftware company that had developed many components required for RTC, such as codecs and echo cancellation techniques. Google open-sourced the GIPS technology and engaged with relevant standards bodies at the IETF and W3C to ensure industry consensus. In May 2011, Google released an open-source project for browser-based real-time communication known as WebRTC. This has been followed by ongoing work to standardize the relevant protocols in the IETF and browser APIs in the W3C. In May 2011, Ericsson Labs built the first implementation of WebRTC using a modified WebKit library. In October 2011, the W3C published its first draft for the spec. WebRTC milestones include the first cross-browser video call, first cross-browser data transfers, and as of July 2014 Google Hangouts was "kind of" using WebRTC. The W3C draft API was based on preliminary work done in the WHATWG. It was referred to as the ConnectionPeer API, and a pre-standards concept implementation was created at Ericsson Labs. The WebRTC Working Group expects this specification to evolve significantly based on:
Outcomes of ongoing exchanges in the companion RTCWEB group at IETF to define the set of protocols that, together with this document, define real-time communications in web browsers. While no one signaling protocol is mandated, SIP over WebSockets is often used partially due to the applicability of SIP to most of the envisaged communication scenarios as well as the availability of open-source software such as JsSIP.
Privacy issues that arise when exposing local capabilities and local streams
Technical discussions within the group, on implementing data channels in particular
Experience gained through early experimentation
Feedback from other groups and individuals
In November 2017, the WebRTC 1.0 specification transitioned from Working Draft to Candidate Recommendation.
Overview
Design
Major components of WebRTC include several JavaScript APIs:
RTCDataChannel allows bidirectional communication of arbitrary data between peers. It uses the same API as WebSockets and has very low latency.
The WebRTC API also includes a statistics function:
getStats allows the web application to retrieve a set of statistics about WebRTC sessions. These statistics data are being described in a separate W3C document.
The WebRTC API includes no provisions for signaling, that is discovering peers to connect to and determine how to establish connections among them. Applications use Interactive Connectivity Establishment for connections and somehow manage sessions, possibly relaying on any of Session Initiation Protocol, Extensible Messaging and Presence Protocol, Message Queuing Telemetry Transport, Matrix, or another protocol. Signaling may depend on one or more servers. RFC 7874 requires implementations to provide PCMA/PCMU, Telephone Event as DTMF, and Opus audio codecs as minimum capabilities. The PeerConnection, data channel and media capture browser APIs are detailed in the W3C. W3C is developing ORTC for WebRTC.
Examples
Although initially developed for web browsers, WebRTC has applications for non-browser devices, including mobile platforms and IoT devices. Examples include browser-based VoIP telephony, also called cloud phones or web phones, which allow calls to be made and received from within a web browser, replacing the requirement to download and install a softphone.
GStreamer directly provides a free WebRTC implementation
Concerns
In January 2015, TorrentFreak reported a serious security flaw in browsers that support WebRTC, saying that it compromised the security of VPN tunnels by exposing the true IP address of a user. The IP address read requests are not visible in the browser's developer console, and they are not blocked by most ad blocking/privacy/security add-ons, enabling online tracking by advertisers and other entities despite precautions. As of September 2019, this WebRTC flaw still surfaces on Firefox 69.x and still by default exposes the user's internal IP address to the web.