7 Creative Uses of WebRTC’s Data Channel

Data channels have more in them than just instant messaging.

[If you are new around here, then you should know I've been writing about WebRTC lately. You can skim through the WebRTC post series or just read what WebRTC is all about.]

To start off 2014, after the acquisition of PeerCDN, I decided to write a few posts about the data channel. This is the first one.

-

When people refer to WebRTC, they state it enables voice, video and data. The data part is usually then placed in the connotation of text chat and “beyond”. That was how I referred to it, until I saw what people who don’t come with the baggage of VoIP and video conferencing that I carry around with me do with it.

Lightbulb

Here are 7 different uses that vendors are employing or talking about when it comes to data channels:

1. File Sharing

One of the first obvious options is the ability to share a file between two browsers. Sans a server.

Think of it as “YouSendIt” without any limit to file size. Or Dropbox sharing without the hosting.

Of course you need to have the browser up and running on both ends, so there’s no asynchronous nature into it, but it does reduce the bandwidth required and it adds privacy as to who has access to the file being shared.

2. CDN Augmentation

What to reduce the load on a CDN when multiple browsers are accessing the same resource? Why not use the data channel to have them send pieces of that resource between themselves? That’s exactly what PeerCDN did before it got acquired.

Also known as “peer assisted delivery” or “P2P CDN”. There are a few vendors in this domain, each with its own angle towards the problem.

3. Bit Torrent on the Web

Take 1 and 2, bunch them together and you get bit torrent running on the web – the ability to share a file from one source on the web with anyone, but have those who access that file collaborate between them to get it.

Taken to the extreme, why not allow a web browser participate in a real Bit Torrent session?

4. Low Latency Networking

Since we can reach direct between browsers, we can use the data channel to create a low latency network, where data is shared directly without going through servers on the way.

Usually, this is indicated as suitable for multiplayer games. There’s more to it than that though.

5. Serverless Networks

How about using the data channel to create web servers inside browsers? This can reduce the need for “real” web servers to run services, and use those only as points of access into the dynamic network that is created ad-hoc.

There are a few trials and attempts in this area – there’s an interview of such a project this Thursday.

6. TOR Replacement

TOR is the anonymity network that is used by the shady parts of the internet. It is built out of multiple servers who delegate requests and effectively anonymizing the traffic passing through them.

The problem is that you are trusting these servers to offer privacy, making them not only the single point of access into the network, but also the single point of security risk. It got hacked by the Feds – or so it is said.

Doing the same using a drastically larger number of web browser nodes increases the chance of privacy – especially when it is all created and gets torn down in an ad-hoc fashion.

7. Privacy in Search Engines

Know Blippex? It is a search engine that plans on giving better results than others. It does that by following the people searching on it to the page they decided to go to – and checking how much time they spent them – effectively understanding how relevant that search result is by how much time the person really uses the result. This is a breach in privacy – but Blippex states they are maintaining that privacy by using the data channel to offer that anonymization – passing the search data by delegating it via other browsers.

-

That’s a handful of the things I have seen, though I heard of others as well – from large-scale private signaling networks to M2M filtering techniques.

Got use cases for me on the data channel? Write them down in the comments.

Tags: , , , , , , , , , , ,

Liked this post?

Share it!

Never miss a post!

Or just grab the RSS feed!

Comments

  1. Good article. You can find here the technical tutorial on DataChannels I presented last December in Paris: WebRTC DataChannels demystified http://www.slideshare.net/victorpascual/webrtc-datachannels-demystified

  2. Philipp Hancke says:

    http://tv.adobe.com/watch/max-2009-develop/p2p-on-the-flash-platform-with-rtmfp/
    FWIW, the stuff Matthew presented was way more elaborate than where data channels are today and still CDNs haven’t picked it up for delivering flash video.

    • I guess it would depend of the type of contents and assets, the business model, etc.

      Flash hasn’t succeeded since the introduction of the iPhone, so them supporting better Flash video when everyone migrated to using the video tag and other mechanisms to play video might not be because of a lack of need of such a solution.

      That said, CDN augmentation is something that hasn’t been put to the test yet in a scale that would make it a viable business model – only time will tell.

      • Philipp Hancke says:

        I do think that this use case was among Adobes reasons for acquiring amicima in 2006. They had it product ready in 2009, i.e. built at a time when flash video was ubiquitous.

        Expect a codified response on the “video tag” topic soon… :-)

  3. How about something simple, like far-end camera control? There’s very little that effect control of Logitech’s BCC950 conference camera. PTZ control via the data channel seems like a good basic starting point.

  4. Hey Tsahi — I appreciate all of the articles you’ve shared on here regarding WebRTC. I’ve been thinking a lot lately about the feasibility of a WebRTC based P2P search engine and distributed web index. I have been unable to find anyone who is working on this right now, so I’m trying to figure out what would be needed to make this happen, or if there are things that I’m not aware of that make this infeasible.

    For a little background on what I’m talking about: Recently there has been a lot of focus on the importance of developing more secure alternatives to email, instant messaging, browsing, etc. … but I’ve seen very little focus on the need for development of alternatives to corporate/centralized search engines. For obvious reasons, developing alternatives to corporate search is every bit as crucial for protecting privacy and free speech as encrypting our emails/chats, and anonymizing our browsing, but the few existing solutions for decentralized/P2P search (e.g. YaCy) all seem overly complex (and thus unusable to most users) and require downloading a standalone application to use. These standalone P2P search applications don’t really make sense from a usability perspective. It’s unrealistic to expect hundreds of millions of users to download a standalone Java app, and configure a P2P index node (especially when configuration is as complex as it is for Yacy).

    It seems to me that it would make more sense to use WebRTC to facilitate P2P connectivity in the web browser, so that the searching and indexing can be done via a simple browser plugin that can be installed by anyone with one-click. This would simplify indexing (e.g. just use the bookmarks/recent sites visited by default, rather than forcing users manually configure it), and would allow people to just use the browser search bar as usual.

    There would still likely need to be some sort of standalone signaling/tracker servers set up to bootstrap search/index nodes into the P2P network, but most of the work — i.e. all of the indexing, searching, routing, etc. — would be done by the nodes using the browser extension. And almost all of the complexity would be hidden from the average user. If P2P search could be simplified in this manner, I feel that the adoption would be much more rapid than if it’s based on complex standalone apps.

    What are your thoughts on this? Do you see this being useful? What are some of the problems/limitations you see arising with WebRTC based P2P search?

    Thanks!

    • Jesse,

      These questions aren’t simple. I am no expert in these areas, but I’d say that the projects you need to look at closer are uProxy, Blippex and Grimwire. Somewhere in-between the way they use the data channel in WebRTC is probably the architecture and the means to implement what you are looking for. Main issue with WebRTC in this case? Forcing Chrome/Firefox on the end users and having enough people using the service to begin with. Other than that, it will be in implementation details – something that is more critical with privacy related services than any other domain.

  5. i made a realtime multiplayer soccer game with WebRTC DataChannel :P
    url: http://riskygear.com/game1-html5-soccer-realtime-multiplayer

    • Ali,

      Thanks for the link! What do you plan on doing next, either with this or elsewhere with WebRTC?

      • well my story with webrtc is too long!
        actually i didn’t knew anything about webrtc.
        i was not even a html5 fan.
        as i remember i was a flash game developer and a flash lover who profit from making small flash games for mochimedia for years…

        since android and ios pushed flash player to the corner and finally cause mochimedia shutdown, small indie flash game developers like has been homeless. :(

        i started learn html5 around 2 month ago!. ( after flash i wasted 1 month on learning “unity3d”, but unity3d was not what i looking for…)…..

        For the first game and first try with html5 i decided to make a realtime multiplayer ball game for iranian players. [ yet did not knew anything about webrtc] .
        my first option was write a TCP/UDP Socket server to handle the game physics and send the physic states to players at high frequency. okay good! but wait!
        here is a BIG problem!
        iran have the lowest internet speed between other countries, i tried to test the game and the results was very bad. high latency, bad ping and… (as my server located at USA and my users are from IRAN).
        soon i found iranian players , include myself, CAN NOT play a realtime game when the server located at another country and players are at another country far away with low speed internet connections.
        i had going down and i had do something before i lost more users.
        after many researches i found there is something new in html5 which lets me create p2p connection between browsers.
        in this case (p2p) the iranian users could easy join the game with low latency without any data transmit to a server which is far away and at another country and can play the game in realtime with no lag.
        so i did dive to WebRTC and learned it quickly and for first try, i developed that riskygear soccer.
        i developed this WebRTC soccer for b30d.ir not for RiskyGear.com.
        the funny thing is iranian players couldn’t play this game well, because of many strict firewalls…
        when i seen iranian players can not play this game, i decided to register a “.com” domain and put the game on it, maybe players at other countries could play it.

        i heard the WebRTC word less then 30 days ago. yet don’t know much about it. i don’t know what i can do with it exactly yet!.

        one of the most interesting parts of webrtc is media stream. but i can not play with it much, while my maximum internet connection speed is 256kpbs which is not real 256kps. how ever i can play with local apps.
        for example first i wanted to implemenet a VOICE CALL in this soccer to let Soccer players Talk to each other realtime, but i realized when iranian users most have 1258kpbs and 256kpbs internet connection with limited bandwidth, they can’t broadcast the such a big data even with p2p. so i resigned to use voice call in game.

        in additional all WEBRTC resources blocked in my country! i hardly can change my ip addresses to get access to them, but most of the times i fail.
        because of political reasons google decided to block IRAN.
        iranian users can not access code.google.com or webrtc resources…
        i wrote about it more here: http://riskygear.com/wp/riskygear-first-post-and-introduce-myself/

        anyway if i developed something new with WEBRTC. i will tell you.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">