WebRTC
WebRTC ("Web Real-Time Communication") is a collection of communications protocols and application programming interfaces that enable real-time communication over peer-to-peer connections. This allows web browsers to not only request resources from backend servers, but also real-time information from browsers of other users.
This enables applications such as video conferencing, file transfer, chat, or desktop sharing without the need of either internal or external plugins.[1]
WebRTC is being standardized by the World Wide Web Consortium (W3C) and the Internet Engineering Task Force (IETF). The reference implementation is released as free software under the terms of a BSD license. OpenWebRTC provides another free implementation based on the multimedia framework GStreamer.
WebRTC uses Real-time Transport Protocol to transfer audio and video.
Support
WebRTC is supported in the following browsers.
- Desktop PC
- Microsoft Edge 12[2]
- Google Chrome 28
- Mozilla Firefox 22[3]
- Safari 11[4]
- Opera 18[5]
- Vivaldi 1.9
- Android
- Google Chrome 28 (enabled by default since 29)
- Mozilla Firefox 24[6]
- Opera Mobile 12
- Chrome OS
- Firefox OS
- Blackberry 10
- iOS 11
- MobileSafari/WebKit
- Tizen 3.0
As of September 2015, Internet Explorer still lacks the native support of WebRTC but ORTC was already added to the new Microsoft browser, Edge.[7][8] Several plugins are available to add the support of WebRTC to these browsers.[9][10] At WWDC 2017, Apple announced Safari would get WebRTC support in Safari 11 [4], and it became available in release 32 of the Safari Technology Preview. [11]
Video-streaming software support
There are some server-side video-streaming programs that support WebRTC functionality: Flussonic Media Server[12] and Wowza Streaming Engine.[13]
History
In May 2011, Google released an open source project for browser-based real-time communication known as WebRTC.[14] This has been followed by ongoing work to standardise the relevant protocols in the IETF[15] and browser APIs in the W3C.[16]
The W3C draft of WebRTC[17] is a work in progress with advanced implementations in the Chrome and Firefox browsers. The API is based on preliminary work done in the WHATWG.[18] It was referred to as the ConnectionPeer API, and a pre-standards concept implementation was created at Ericsson Labs.[19] The Web Real-Time Communications Working Group expects this specification to evolve significantly based on:
- Outcomes of ongoing exchanges in the companion RTCWEB group at IETF[20] to define the set of protocols that, together with this document, define real-time communications in Web browsers. While no one signalling protocol is mandated, SIP over Websockets (RFC 7118) 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[21]
- Experience gained through early experimentation
- Feedback from other groups and individuals
Design
Major components of WebRTC include:
-
getUserMedia
, which allows a web browser to access the camera and microphone and to capture media[22] -
RTCPeerConnection
, which sets up audio/video calls[23] -
RTCDataChannel
, which allow browsers to share data via peer-to-peer[24]
The WebRTC API also includes a statistics function:
-
getStats
, which allows the web application to retrieve a set of statistics about WebRTC sessions. These statistics data are being described in a separate W3C document.[25]
RFC 7874 requires implementations to provide PCMA/PCMU (RFC 3551), Telephone Event as DTMF (RFC 4733), and Opus (RFC 6716) audio codecs as minimum capabilities. The PeerConnection, data channel and media capture browser APIs are detailed in the W3C.
W3C is developing ORTC (Object Real-time Communications) for WebRTC.[26] This is commonly referred to as WebRTC 1.1.
Concerns
In January 2015, TorrentFreak reported that browsers supporting WebRTC suffer from a serious security flaw that compromises the security of VPN tunnels, by allowing the true IP address of the user to be read.[27] 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[28] (however the uBlock Origin add-on can fix this problem).[29]
See also
- Global IP Solutions (GIPS)
- Session Description Protocol (SDP)
- WebRTC Gateway
- WebSocket (alternative to WebRTC in full-duplex demand)
References
- ↑ How WebRTC Is Revolutionizing Telephony. Blogs.trilogy-lte.com (2014-02-21). Retrieved on 2014-04-11.
- ↑ Microsoft Edge Dev. Windows.com (2015-09-18). Retrieved on 2015-09-19.
- ↑ Firefox Notes - Desktop. Mozilla.org (2013-06-25). Retrieved on 2014-04-11.
- 1 2 "Safari 11.0". Apple Inc. Retrieved 6 June 2017.
- ↑ Opera News. blogs.opera.com (2013-11-19). Retrieved on 2015-09-17.
- ↑ Firefox Notes - Desktop. Mozilla.org (2013-09-17). Retrieved on 2014-08-04.
- ↑ "Internet Explorer Web Platform Status and Roadmap". Microsoft. Retrieved 7 September 2014.
- ↑ "ORTC API is now available in Microsoft Edge". Microsoft. Retrieved 11 October 2015.
- ↑ "Priologic Releases First Open Source WebRTC Plugin for Internet Explorer". 2014-06-10. Archived from the original on 2014-06-26.
- ↑ Wilcox, Charles (2014-05-12). "Temasys Plugin Supports webRTC in Internet Explorer and Apple Safari, on Desktops" (Press release). Temasys Communications Pte Ltd. PRWeb.
- ↑ "Safari Technology Preview Release Notes". Retrieved 12 June 2017.
- ↑ Flussonic Media Server - changelog note about WebRTC support
- ↑ Wowza Streaming Engine - blog post related this feature implementation
- ↑ Harald Alvestrand (2011-05-31). "Google release of WebRTC source code". public-webrtc@w3.org. Retrieved 2012-09-12.
- ↑ Charter of the Real-Time Communication in WEB-browsers (rtcweb) working group
- ↑ "WebRTC 1.0: Real-time Communication Between Browsers". W3.org. Retrieved 2012-09-12.
- ↑ "WebRTC 1.0: Real-time Communication Between Browsers". Dev.w3.org. Retrieved 2012-09-12.
- ↑ "Introduction — HTML Standard". Whatwg.org. Retrieved 2012-09-12.
- ↑ "Beyond HTML5: Peer-to-Peer Conversational Video". Labs.ericsson.com. Retrieved 2012-09-12.
- ↑ "Rtcweb Status Pages". Tools.ietf.org. Retrieved 2012-09-12.
- ↑ "draft-jesup-rtcweb-data-protocol-00 - WebRTC Data Channel Protocol". Tools.ietf.org. Retrieved 2012-09-12.
- ↑ "Media Capture and Streams: getUserMedia". W3C. 2013-09-03. Retrieved 2014-01-15.
- ↑ "WebRTC: RTCPeerConnection Interface". W3C. 2013-09-10. Retrieved 2014-01-15.
- ↑ "WebRTC: RTCDataChannel". W3C. 2013-09-10. Retrieved 2014-01-15.
- ↑ "Identifiers for WebRTC's Statistics API". W3C. 2014-09-29.
- ↑ "W3C ORTC (Object Real-time Communications) Community Group".
- ↑ Huge Security Flaw Leaks VPN Users’ Real IP-addresses TorrentFreak.com (2015-01-30). Retrieved on 2015-02-21.
- ↑ STUN IP Address requests for WebRTC Retrieved on 2015-02-21.
- ↑ Raymond Hill (26 Mar 2016). "Prevent WebRTC from leaking local IP address". uBlock Origin documentation. Retrieved 1 Sep 2016.
Further reading
- Proust, S., ed. (May 2016). Additional WebRTC Audio Codecs for Interoperability. IETF. RFC 7875. https://tools.ietf.org/html/rfc7875. Retrieved 2016-10-12.
- Valin, J. M.; Bran, C. (May 2016). WebRTC Audio Codec and Processing Requirements. IETF. RFC 7874. https://tools.ietf.org/html/rfc7874. Retrieved 2016-10-12.
- Roach, A. B. (March 2016). WebRTC Video Processing and Codec Requirements. IETF. RFC 7742. https://tools.ietf.org/html/rfc7742. Retrieved 2016-10-12.
- Perumal, M.; Wing, D.; Ravindranath, R.; Reddy, T.; Thomson, M. (October 2015). Session Traversal Utilities for NAT (STUN) Usage for Consent Freshness. IETF. RFC 7675. https://tools.ietf.org/html/rfc7675. Retrieved 2016-10-12.
- Holmberg, C.; Hakansson, S.; Eriksson, G. (March 2015). Web Real-Time Communication Use Cases and Requirements. IETF. RFC 7478. https://tools.ietf.org/html/rfc7478. Retrieved 2016-10-12.
External links
- Official website
- W3C Web Real-Time Communications Working Group
- IETF Real-Time Communication in WEB-browsers (rtcweb) Working Group
- Getting Started With WebRTC
- WebRTC Interest and History
- WebRTC:How and Why?
- WebRTC: IP Address Exposure Demo