Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Technology behind real-time polling

Technology behind real-time polling

Problem

I am looking at facebook news feed/ticker right now and I am wondering what technology/architecture it uses to pull in data asynchronously when any of my connections make an update. One possibility that I can think of is a javascript setInterval on a function that aggressively polls the server for new data.

I wonder how efficient that is.

Another possible technology that I can think of is something like Comet/NodeJS architecture that pings the client when there is an update on the server. I am not too familiar with this technology.

If I wanted to create something similar to this. What should I be looking into? Is the first approach the preferred way to do this? What technologies are available out there that will allow me to do this?

Problem courtesy of: denniss

Solution

There are several technologies to achieve this:

  • polling: the app makes a request every x milliseconds to check for updates
  • long polling: the app makes a request to the server, but the server only responds when it has new data available (usually if no new data is available in X seconds, an empty response is sent or the connection is killed)
  • forever frame: a hidden iframe is opened in the page and the request is made for a doc that relies on HTTP 1.1 chunked encoding
  • XHR streaming: allows successive messages to be sent from the server without requiring a new HTTP request after each response
  • WebSockets: this is the best option, it keeps the connection alive at all time
  • Flash WebSockets: if WS are not natively supported by the browser, then you can include a Flash script to enhance that functionality

Usually people use Flash WebSockets or long-Polling when WebSockets (the most efficient transport) is not available in the browser.

A perfect example on how to combine many transport techniques and abstract them away is Socket.IO.

Additional resources:

http://en.wikipedia.org/wiki/Push_technology
http://en.wikipedia.org/wiki/Comet_(programming))
http://www.leggetter.co.uk/2011/08/25/what-came-before-websockets.html
Server polling with JavaScript
Is there a difference between long-polling and using Comet
http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery
Video discussing different techniques: http://vimeo.com/27771528

The book Even Faster Websites has a full chapter (ch. 8) dedicated to 'Scaling with Comet'.

Solution courtesy of: alessioalex

Discussion

View additional discussion.



This post first appeared on Node.js Recipes, please read the originial post: here

Share the post

Technology behind real-time polling

×

Subscribe to Node.js Recipes

Get updates delivered right to your inbox!

Thank you for your subscription

×