Real Time Communication over Web (webRTC

)

STUDENT NAME: HASSAN, MD.SANITUL
STUDENT ID: 10-16402-2
COURSE NAME: RESEARCH METHODOLOGY
SECTION: B
DEPARTMENT: Department of Computer science
SUPERVISOR: Dr. Dip Nandi
DATE OF SUBMISSION: May 4, 2014

Statement of Purpose
My primary research interest is in application of real time communication over web and future of WebRTC. Imagine
a world where our 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 our web application. That's the vision of WebRTC [1]. We can do
anything today with our browser. Save for real time video calling. We can use Flash for it, but the experience there
is lacking. And then, Flash isn’t going to be there for mobile devices WebRTC closes that gap, allowing video
calling and peer to peer data sharing from inside a web browser. WebRTC requires no plugins, frameworks or
applications; all you need is a WebRTC compatible browser [2]. To an end user, WebRTC applications “just work”
right out of the box. No Flash, no Silverlight, no JavaScript API, just pure video, audio, and data communication on
any webpage [2]. Let's be clear what WebRTC is and what it is not. It is a baseline platform that has instigated a
new wave of "client-less" communications solutions. It provides an architecture that frees developers from the
chores associated with licensing codecs and distributing software clients. WebRTC solutions are emerging across
the industry and were spotted throughout the exhibit hall at the recent Enterprise Connect conference. These are
powerful, good things. However, WebRTC failed to deliver on three key goals which promised a revolution.
WebRTC is not ubiquitous, not plugin-free, and may not even be free [3]. WebRTC has not delivered any new
capabilities and remains a niche technology with no examples that have far-reaching implications. That’s why I try
to explorer why webRTC is still in developing surface. Starting with ubiquity, WebRTC remains relegated to the
minority. A key goal of WebRTC was to raise the standard of the default browser. With such widespread support,
developers could build communications-capable applications with assumed end-user compatibility. Unfortunately,
this is far from reality. Compatible versions of WebRTC are supported in Chrome and Firefox only, and remain the
exception for browsers on mobile devices [4]. There is no native support on Microsoft's Internet Explorer or Apple's
Safari browser. Through this cross-browsing issue and less several helping resource I recently contact with a
software farm Rational Technology to build a real time collaboration application where multiple user can chat with
each other , making video conferencing call, co-writing and co-sketching, real-time document sharing and
presentation but the main challenge is all those collaboration does not depend on a server platform (apache server or
.Net server) rather than using a server less technology to echo the message client to client at a real-time. This paper
also describes the research challenges for WebRTC and working demonstration for using a WebRTC application.
Research Proposal
Introduction

WebRTC is an open-source project enabling plugin-free, Real Time Communications (RTC) in the browser [5]. It
includes the fundamental building blocks for high-quality communications such as network, audio, and video
components used in voice and video chat applications These components, when implemented in a browser, can be
accessed through a JavaScript API, enabling developers to easily implement their own RTC web app.
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.
Real time data communication does not mean that we cannot keep the record of data because of server less data
channels we still have the feature of recording audio video and saving file.
Using webRTC we do not need a dedicated web server or cloud storage to sharing files, live video conference or
video broadcasting.
so now we can easily build up a web based video conferencing room (server less because of peer to peer web socket
connection over directly client’s browser to echo the message) where maximum 256 user (on Google chrome
Maximum peer connections limit is 256 ) can connect with each other at a time [6]. Depending on your bandwidth
they are limited to give certain stability. A collaboration room for the students and teacher for sharing course
materials slide presentation solving math problem as a group as well as video chatting. Remotely co-working system
for a work-place.
Synchronize data transmission, storage, and conflict resolution when multiple users are editing a file.
WebRTC is entirely peer to peer, so we don’t have to pay for any of the bandwidth across the wire. Additionally,
because WebRTC is entirely browser to browser, we get the highest performance and lowest latency possible.
This research paper wills therefore analysis the following:
 To Identify of WebRTC among the future of server less synchronize collaboration
 To examine the extend of WebSocket signal and quality of audio & video
 To identify and evaluate the lacking of cross browser issue
Literature Review
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 [7].
The W3C draft of WebRTC 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 [7]. It was referred as the ConnectionPeer
API, and a pre-standards concept implementation was created at Ericsson Labs. Before webRTC only Flash and
plug-ins could offer RTC (real time communication). Flash offered somewhat low quality and required a server
license. At the time, RTC were licensed by several large customers and were present in products from Google,
Skype, AOL, Yahoo!, Cisco and others.
Even though Apple and Microsoft haven’t commented on the new open source technology which delivers high
quality audio and video capabilities to desktop and mobile browsers, major carriers such as AT&T and Telefonica,
leading infrastructure providers like Alcatel-Lucent and Ericsson and new WebRTC application providers in likes of
Teledini and NetDev are driving the technology forward [8].
Research analyst, Sabir Rafiq comments, “WebRTC brings many opportunities; ABI Research believes major trends
will start to form within the enterprise market with WebRTC. Companies will be willing to implement the new
technology to aid productivity and reduce communication barriers within the workplace.” [9]
ABI Research recognizes that there are significant barriers in the way of WebRTC technology becoming widely
adopted. Firstly, Apple is not showing any interest in WebRTC, similar to its approach to Adobe Flash. As it is a
brand leader in the mobile space, this could impact short term opportunity. Microsoft’s alternative to WebRTC, the
CU-RTC (Customizable, Ubiquitous Real Time Communication over the Web), could deter users away from
WebRTC and should essentially be considered a competitor. In the end, we believe Apple and Microsoft will not
ignore the market opportunity for WebRTC [9].
However, a new report from ABI Research entitled "Future of Voice and Messaging — WebRTC and Telco APIs"
suggests that, even without Apple and Microsoft, WebRTC will do just fine in the mobile space. In fact, the research
firm expects there will be 4.7 billion mobile WebRTC devices worldwide by 2018 [10].
What is WebRTC?
WebRTC is an open-source project enabling plugin-free, Real Time Communications (RTC) in the browser. It
includes the fundamental building blocks for high-quality communications such as network, audio, and video
components used in voice and video chat applications [4].
The development of WebRTC is supported by the W3C, Google, Mozilla, and Opera. Other parties with a vested
interest in the standard include Apple, Microsoft, Ericsson, Cisco and countless smaller real-time communications
companies.
WebRTC has now implemented open standards for real-time, plugin-free video, audio and data communication. The
need is real:
 Many web services already use RTC, but need downloads, native apps or plugins. These includes Skype,
Facebook (which uses Skype) and Google Hangouts (which use the Google Talk plugin).
 Downloading, installing and updating plugins can be complex, error prone and annoying.
 Plugins can be difficult to deploy, debug, troubleshoot, test and maintain—and may require licensing and
integration with complex, expensive technology. It's often difficult to persuade people to install plugins in
the first place!
WebRTC is made up of three APIs [3]:
 GetUserMedia (camera and microphone access)
 PeerConnection (sending and receiving media)
 DataChannels (sending non-media direct between browsers)
Benefits of using webRTC
It's free
WebRTC is an open-source application programming interface (API) first introduced by Google in 2011
Platform and device independence
Any web services application can direct the browser to create a real-time voice or video connection to another
WebRTC device or to a WebRTC media server.
Secure voice and video
WebRTC has always-on voice and video encryption. The Secure RTP protocol (SRTP) is used for encryption and
authentication
Advanced voice and video quality
WebRTC uses the Opus audio codec that produces high fidelity voice. The Opus codec is based on Skype's SILK
codec technology
Interoperability with VoIP and video
The biggest value of WebRTC is its promise of interoperability with existing voice and video systems. This includes
devices using SIP, Jingle, XMPP, and the PSTN [12].
Rapid application development

Developers will experience a streamlined development process reducing the time for application implementation.
Detailed knowledge of WebRTC will not be necessary because of the standardized APIs. Finally, the voice and
video codecs are license-free.
Along with those several benefits the webRTC API still have some deficient. webRTC is a recent new technology so
it is still under developing and there is no helping support of using webRTC API. Analyze the webRTC API we find
some critical cross-browser issue of using webrtc application. Currently webRTC project is only support Google
chorom and Mozilla browser and less supported by Opera and safari. Web signaling and data passing quality is
comfortable and reasonable but it cannot fully provided secure data transmission so there is still noise about
signaling and network layer.
Here in this paper a solution have been made that could reduce the websocket signaling noise and can able to get
the secure data transmission protocol over browser to browse via websocket. Illustration and visualization of the
data is one of the very primary factors in any project. And at the mean time this paper also provided a solution to
mostly overcome the cross browser issue. Since the native webRTC api only supported by the latest google chrome
and Mozilla firefox browser this paper demonstrate the modification of webRTC api so that it can supported by most
of the browser. So in this research a solution must be came up so that it will gives the proper utilization of the
websocket data passing and the synchronize communication over Web . This is why; in this paper a possible best
solution has been made to utilize the real time sharing of huge amount of data at the same time no system failure.

Bestowing to this research paper the following main question and sub-questions come to the main challenge

Main Question
Because of the cross-browser issues what is the future of WebRTC?
Sub-questions
 Why WebRTC is not supported by other browsers except Google chrome and Mozilla Firefox?
 How we can resolve the cross-browser dispute?
 Should we switch from RTCDataChannel to WebSocket to maximum support of WebRTC service?
 one of the most significant risks appears to be the lack of involvement in the standardization, so why other
giant software company like Microsoft or Apple are still not interested to support WebRTC technology?

Proposed Research Methodology
Our paper is mainly based WebRTC (Web Real-Time Communication) is an API definition 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. For simplification of using WebRTC api we using EasyRTC framework.

The EasyRTC framework [20] consists of a client or browser-side JavaScript library and a backend JavaScript
server built on top of a node.js [19]. Because the WebRTC library is built into each browser there is no need for a
browser plug-in.
Before starting the modification of WebRTC API this paper will describe the basic methodology and technique
followed by the WebRTC API.
WebRTC implements three APIs [13]
 MediaStream (aka getUserMedia)
 RTCPeerConnection
 RTCDataChannel

Figure 1: webRTC data pathways
Figure1 Illustrates NAT traversal, peer-to-peer networking, and the requirements for building a server app for user
discovery and signaling, are beyond the scope of this article. Suffice to say that the STUN protocol and its
extension TURN are used by the ICEframework to enable RTCPeerConnection to cope with NAT traversal and
other network vagaries [1]
A WebRTC application usually needs to do most of the following steps.
 Get access to the local camera and microphone in the form of a "media stream".
 Establish a connection to a signaling server.
 Initiate a call to a person on another browser.
 Connect media streams to video tags.
As we say before webRTC is a recent developing technology. Those three api module are still developing and so
there is no aptitude of bug free layer.

MediaStream [13] [15]
The first API module deal with user media webcam and microphone, what if there is no webcam or microphone
media resource not available in a user computer or the user only use webRTC application as a synchronize file
sharing system to collaborate with other webRTC system. To overcome this problem this paper proposes a very
simple solution for the sub module of get user Media streaming.
Whenever a user joining a webRTC application via browser the system automatically check the user’s available
media system if no resource available system notify the user to free the resource or user can join the system without
sharing any media resource. In our existing webRTC api joining a session must have user media access.
Algorithms (jquery) to overcome Media Streaming problem
navigator.getUserMedia =(navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia);
if (navigator.getUserMedia){
navigator.getUserMedia
(
{ video: true },
function (stream) {
$("#userimage_basic").hide();
$("#webcam_basic").show();
videoBasic.src = window.URL.createObjectURL(stream);
localMediaStreamBasic=stream;
$("#webcamstart_basic").attr("disabled", true);
$("#webcamcapture_basic").attr("disabled", false);
, onFailure);
}
else {
onFailure();
}

RTCPeerConnection [14]
RTCPeerConnection is the WebRTC component that handles stable and efficient communication of streaming data
between peers.

Figure 2: webRTC Architecture
Figure2 Illustrates the WebRTC architecture diagram showing the role of RTCPeerConnection. As we will notice,
the green parts are complex.

The codecs and protocols used by WebRTC do a huge amount of work to make real-time communication possible,
even over unreliable networks:
 packet loss concealment
 echo cancellation
 bandwidth adaptivity
 dynamic jitter buffering
 automatic gain control
 noise reduction and suppression
 image 'cleaning'.
The W3C code above shows a simplified example of WebRTC from a signaling perspective [1].
RTCDataChannel [1][16]
As well as audio and video, WebRTC supports real-time communication for other types of data.
The RTCDataChannel API enables peer-to-peer exchange of arbitrary data, with low latency and high throughput.
There's a simple 'single page' demo at simpl.info/dc.
There are many potential use cases for the API, including:
 Gaming
 Remote desktop applications
 Real-time text chat
 File transfer
 Decentralized networks
The syntax is deliberately similar to WebSocket, with a send() method and a message event:
var pc = new webkitRTCPeerConnection(servers,
{optional: [{RtpDataChannels: true}]});

pc.ondatachannel = function(event) {
receiveChannel = event.channel;
receiveChannel.onmessage = function(event){
document.querySelector("div#receive").innerHTML = event.data;
};
};

sendChannel = pc.createDataChannel("sendDataChannel", {reliable: false});

document.querySelector("button#send").onclick = function (){
var data = document.querySelector("textarea#send").value;
sendChannel.send(data);
};

Communication occurs directly between browsers, so RTCDataChannel can be much faster than WebSocket even if
a relay (TURN) server is required when 'hole punching' to cope with firewalls and NATs fails.
RTCDataChannel is available in Chrome, Opera and Firefox so again we can see the cross browser issue. Internet
explorer and Safari does not support RTCDatachanel. So in this case this paper propose to add another sub module
of Data Chanel to detect user browser and check if the browser does not support Data Chanel than this layer
automatically change the RTCDataChannel to Websocket because websocket and RTCDataChannel are still server
less technology.
Compatibility table for support of WebRTC Peer-to-peer connections in desktop and mobile browsers [17]

Figure 3: Browsers Support WebRTC
Figure3 Illustrates around 52% global web devices support webRTC application it will near to 90% if our propose
modification version of webRTC api is used. Because this paper show webRTC is based on RTCDataChannel and
only supported by Google chrome, Mozilla Firefox and some of other latest browser according to this picture . But
out proposed web Socket replacement of RTCDataChannel can be supported any browsers and mobile devices that
has at least HTTP or flash
Browsers support HTML5 WebSocket API [18]


Figure 4: Browsers support WebSocket

Equally comparing of those browsers support capabilities Figure3 and Figure4 this research paper proposes using
of webSocket in Data Channel to overcome webRTC cross-browser issues up to 90%.
Possible problem of webRTC problem using easyRTC framework
No Self Video
 Ensure no other program is using the camera
 Test camera in another application (such as Skype or WebEx)
 Completely close the browser then reopen it.
 Shutdown / reset camera and computer. Some cameras seem to freeze up (even Apple ones).
 No hardware / driver support. WebRTC in Android isn't enabled for all devices.
 HOPE: Browsers will do a better job of detecting and handling camera problems in the future.
No Video Sent To Peer
 Firewall issues are the primary cause. For simple testing, be sure to use a simple single subnet network.
 Production environment should allow direct, then STUN, then UDP-TURN, then TCP-TURN.
 Even with TURN, some firewalls will still prevent WebRTC traffic.
 Mobile networks (3G/4G) have differing restrictions.
 We've seen some Android devices unable to display remote video reliably. The Nexus devices seem to be
the best tested.
CONCLUSION
In this paper a concept has been developed and associate procedure for real time collaboration system over web has
been proposed which is far better than native WebRTC application. This research goal has just fulfilled the process
criteria and also had shown the cross-browsing issues and RTCDataChannel problem. By using this paper one can
able to develop an application that can help the user a reliable secure transmission data and overcome with the cross
browsing concern..
References:
[1] Dutton, S. (2012, January 12). Getting Started with WebRTC - HTML5 Rocks. HTML5 Rocks. Retrieved May 4,
2014, from http://www.html5rocks.com/en/tutorials/webrtc/basics/
[2] Hanson, J. (2014, January 14). What is WebRTC? | PubNub. What is WebRTC? | PubNub. Retrieved May 4,
2014, from http://www.pubnub.com/blog/what-is-webrtc/
[3] Michels, D. (2014, March 27). WebRTC is for Losers. - Post. Retrieved May 4, 2014, from
http://www.nojitter.com/post/240166836/webrtc-is-for-losers
[4] WebRTC. (2012, March 9). WebRTC. Retrieved May 4, 2014, from http://www.webrtc.org/
[5] Add live, face-to-face video with the OpenTok platform. (2013, June 5). Tokbox. Retrieved May 4, 2014, from
http://tokbox.com/about-webrtc
[6] khan, m. (2013, February 15). muaz-khan/WebRTC-Experiment. GitHub. Retrieved May 4, 2014, from
https://github.com/muaz-khan/WebRTC-Experiment/tree/master/webrtc-broadcasting
[7] WebRTC. (2014, November 4). Wikipedia. Retrieved May 4, 2014, from http://en.wikipedia.org/wiki/WebRTC
[8] WebRTC: What was the history of WebRTC inside Google before it was released to the public?. (2013,
September 20). What was the history of WebRTC inside Google before it was released to the public?. Retrieved May
4, 2014, from http://www.quora.com/WebRTC/What-was-the-history-of-WebRTC-inside-Google-before-it-was-
released-to-the-public
[9] 4.7 Billion Mobile WebRTC Devices by 2018 Despite Lack of Open Support from Apple and Microsoft. (2013,
September 25). 4.7 Billion Mobile WebRTC Devices by 2018 Despite Lack of Open Support from Apple and
Microsoft. Retrieved May 4, 2014, from https://www.abiresearch.com/press/47-billion-mobile-webrtc-devices-by-
2018-despite-l
[10] Lidstone, R. (2013, September 25). ABI Research Expects 4.7B Mobile WebRTC Devices by 2018. ABI
Research Expects 4.7B Mobile WebRTC Devices by 2018. Retrieved May 4, 2014, from
http://www.webrtcworld.com/topics/webrtc-world/articles/354394-abi-research-expects-47b-mobile-webrtc-
devices-2018.htm
[11] Audin, G. (2014, January 1). 9 Advantages Of WebRTC - Network Computing. Network Computing. Retrieved
May 4, 2014, from http://www.networkcomputing.com/unified-communications/9-advantages-of-webrtc/a/d-
id/1113301
[12] Barr, L. (2014, February 21). Take a Look Inside WebRTC. WebRTC Web Application Development Company
in Atlanta Blacc Spot Media Inc RSS2. Retrieved May 4, 2014, from http://www.blaccspot.com/blog/webrtc/take-a-
look-inside-webrtc/
[13] MediaStream API. (2014, January 5). Mozilla Developer Network. Retrieved May 4, 2014, from
https://developer.mozilla.org/en-US/docs/WebRTC/MediaStream_API
[14] WebRTC 1.0: Real-time Communication Between Browsers. (2013, March 12). WebRTC 1.0: Real-time
Communication Between Browsers. Retrieved May 4, 2014, from
http://dev.w3.org/2011/webrtc/editor/webrtc.html#rtcpeerconnection-interface
[15] Khan, M. (2013, November 13). How to use RTCPeerConnection.js? (v1.5) ® Muaz Khan.How to use
RTCPeerConnection.js? (v1.5) ® Muaz Khan. Retrieved May 4, 2014, from https://www.webrtc-
experiment.com/docs/how-to-use-rtcpeerconnection-js-v1.1.html
[16] Ristic, D. (2014, February 4). WebRTC data channels: WebRTC data channels for high performance data
exchange - HTML5 Rocks. HTML5 Rocks. Retrieved May 4, 2014, from
http://www.html5rocks.com/en/tutorials/webrtc/datachannels/
[17] Can I use WebRTC Peer-to-peer connections?. (2014, March 6). Can I use WebRTC Peer-to-peer connections.
Retrieved May 4, 2014, from http://caniuse.com/rtcpeerconnection
[18] What browsers support HTML5 WebSocket API?. (2014, January 3). javascript. Retrieved May 4, 2014, from
http://stackoverflow.com/questions/1253683/what-browsers-support-html5-websocket-api
[19] The fastest, most robust, easiest way to implement secure WebRTC video, audio, and data applications for the
enterprise.. (2013, July 13). EasyRTC. Retrieved May 4, 2014, from http://www.easyrtc.com/
[20] Davies, E. (2013, February 13). priologic/easyrtc. GitHub. Retrieved May 4, 2014, from
https://github.com/priologic/easyrtc/blob/master/README.md