WebRTC: Video telephony without a browser plugin

Data Channel

WebRTC can do more than just transfer media streams. The data() function in Listing 14 creates a data channel for transmitting text messages that works like a WebSocket. Line 3 uses the createDataChannel() method to open a channel for the current peer-to-peer connection in the peer object, pc. The ondatachannel event in line 5 occurs when a data channel is opened. The config() function in line 11 defines the callback function that is triggered when a text message arrives, and the send() method in line 14 sends messages over the existing connection.

Listing 14

Data Channel

01 function data(pc, opener) {
02   if (opener) {
03     config(pc.createDataChannel("work"));
04   } else {
05     pc.ondatachannel = function(evt) {
06       config(evt.channel);
07     }
08   }
09 }
10
11 function config(channel) {
12   channel.onmessage = function(evt) {
13     console.log(evt.data);
14     channel.send("received message");
15   }
16 }

Chrome Can Do

The sample application for Firefox can be ported for the Google Chrome browser with little effort. To port the application to Chrome, just change the manufacturer prefix moz to webkit in the examples. The expressions you need to change could just as easily be outsourced into functions that call the appropriate function, including a manufacturer prefix for each browser. Note that the examples only work in Chrome when called via the HTTP protocol, such as http://localhost:6655/mediastream.html.

WebRTC can also connect multiple browsers. The topology of peer-to-peer connections is endless, but a computer quickly reaches its limits when asked to play multiple media streams. WebRTC brings native real-time communication to the browser. Two browsers are needed to build a peer-to-peer connection across the Internet. WebRTC also works around NAT or firewalls. With its data channel, WebRTC not only ensures a bidirectional exchange of application data but also transfers media streams.

The direct connection between browsers saves time and data traffic. This opens up opportunities for many new HTML5 applications to web developers  – for example, video chats or distributed applications, such as a networked memory game.

The Author

Andreas Möller (http://pamoller.com) has focused on developing Internet-based software since 2001. His work includes database and web applications, as well as single-source publishing. He is currently a consultant and freelance writer.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Post-PRISM Privacy

    Linux users didn't need the recent NSA eavesdropping scandal to convince them that securing communication was a good idea. Free software developers have been creating secure tools for years that offer similar functionalities to all of those popular but very leaky services with ridiculous names.

  • Streaming with Icecast

    For live Internet radio, you need a streaming server. We’ll show you how to get started with Icecast, an open source streaming alternative for Linux.

  • Web Cryptography API

    The controversial Web Cryptography API offers flexible encryption for web applications, but it also lays the groundwork for content providers to implement more powerful access restrictions through DRM.

  • Downloading Web Video

    With the right tools, you can store YouTube movies on your hard disk and view them when Internet access is unsatisfactory or unavailable.

  • MythTV

    MythTV and its extensive ecosystem of add-ons let you turn your Linux computer into a full-featured home media center.

comments powered by Disqus

Direct Download

Read full article as PDF:

Price $2.95

News

njobs Europe
What:
Where:
Country:
Njobs Netherlands Njobs Deutschland Njobs United Kingdom Njobs Italia Njobs France Njobs Espana Njobs Poland
Njobs Austria Njobs Denmark Njobs Belgium Njobs Czech Republic Njobs Mexico Njobs India Njobs Colombia