Real-Time Rich Internet Applications (RTRIA)

29 Oct 2009

Real-Time Rich Internet Applications (RTRIAs) are RIAs that consume and display real-time data. They have all the characteristics of an RIA with the added feature that data is being pushed to them in real-time as soon as it becomes available. This is in contrast to the current polling solution employed by most RIAs or other web applications that display updating data.

I mentioned RTRIAs for the first time back in April 2009 in a post called "What is the real-time web" on the Caplin Systems Platformability blog, and since then there has been a real-time web explosion. The "real-time web" is now the buzz phrase around the Internet that everybody is jumping on. Back in April I set up a Google Alert for the term "real-time web". Back then I got maybe one Google Alert a day for this term, probably less. Now, I get at least two dense emails a day from Google with people using the term for all sorts of things; real-time web stats, real-time analytics, real-time search, rssCloud, pubsubhubbub, the list goes on. This is not the real-time web! Whilst some of the things on this list will help  the web become truly real-time (rssCloud and pubsubhubbub may even form the back bone), none of these things give the user a truly real-time web experience.

My opinion about what the real-time web is has not changed from that first blog post. For me, it's not just about data being available as soon as it's been published. In this situation the user still has to actively make a request to see if any data is available. Instead it's about making a single request for data (a subscription) and that data being pushed to your RIA to be consumed by the application user in real-time. Quite a few applications have implemented a polling solution (more on this later) but the experience presented to the user is not truly real-time.

[caption id="attachment_463" align="alignnone" width="659" caption=""Real-Time?""]"Real-Time"[/caption]

In my opinion the only way to guarantee being able to deliver truly real-time data (TRTD) to a web application is by maintaining a streaming connection to the source of the data using a continuous streaming HTTP connection. Most web applications use a technique called polling or long polling to retrieve their data which means that although the data is initially "fresh", within seconds it could be out of date, or more information may be available. I'll discuss server technologies further in a later post.

At the moment there are a number of technologies that allow you to develop RTRIAs. Ajax, Silverlight and Flash are the three mainstream solutions. The core barriers to RTRIAs are the scalability of server technology and access to truly real-time data.