<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Phil Leggetter - Real-Time Web Software and Technology Evangelist &#187; comet</title>
	<atom:link href="http://www.leggetter.co.uk/tag/comet/feed" rel="self" type="application/rss+xml" />
	<link>http://www.leggetter.co.uk</link>
	<description>Real-Time Web, Real-Time Data and Social Media Software and Technology Evangelist and Consultant</description>
	<lastBuildDate>Sun, 29 Jan 2012 05:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Delivery as a Service and Data as a Service in 2011</title>
		<link>http://www.leggetter.co.uk/2011/01/08/delivery-as-a-service-and-data-as-a-service-in-2011.html</link>
		<comments>http://www.leggetter.co.uk/2011/01/08/delivery-as-a-service-and-data-as-a-service-in-2011.html#comments</comments>
		<pubDate>Sat, 08 Jan 2011 13:32:30 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[comet]]></category>
		<category><![CDATA[http streaming]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[PubSubHubbbub]]></category>
		<category><![CDATA[real-time client push]]></category>
		<category><![CDATA[real-time data]]></category>
		<category><![CDATA[real-time notifications]]></category>
		<category><![CDATA[real-time web]]></category>
		<category><![CDATA[web browsers]]></category>
		<category><![CDATA[XMPP]]></category>

		<guid isPermaLink="false">http://www.leggetter.co.uk/?p=4703</guid>
		<description><![CDATA[<p><a href="http://dashes.com/anil/2010/12/delivery-as-a-service.html">Delivery as a Service</a> and <a href="http://en.wikipedia.org/wiki/Data_as_a_Service">Data as a Service</a> (both DaaS) are definitely going to be big in 2011. Things really kicked off in 2010 with the emergence of companies focusing on real-time data delivery and mobile. We also started to see really exciting services focused on delivering real-time client push notifications to web [...]
Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2011/01/07/real-time-data-delivery-http-streaming-versus-pubsubhubbub.html' rel='bookmark' title='Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub'>Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/20/the-real-time-web-techmeetup-aberdeen-19012011.html' rel='bookmark' title='The Real-Time Web: TechMeetup Aberdeen &#8211; 19/01/2011'>The Real-Time Web: TechMeetup Aberdeen &#8211; 19/01/2011</a></li>
<li><a href='http://www.leggetter.co.uk/2010/12/21/why-client-apis-are-an-important-part-of-any-real-time-service.html' rel='bookmark' title='Why client APIs are an important part of any real-time service'>Why client APIs are an important part of any real-time service</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a  href="http://dashes.com/anil/2010/12/delivery-as-a-service.html">Delivery as a Service</a> and <a  href="http://en.wikipedia.org/wiki/Data_as_a_Service">Data as a Service</a> (both <strong>DaaS</strong>) are definitely going to be big in 2011. Things really kicked off in 2010 with the emergence of companies focusing on real-time data delivery and mobile. We also started to see really exciting services focused on delivering real-time client push notifications to web browsers. I would put <a  href="http://kwwika.com">Kwwika</a> in both of these categories.</p>
<p>As 2011 continues we might to see some of these companies either partner up or start to tread on each others toes as they look at delivering data to alternative platforms and clients. Ultimately we are going to see services offering real-time communication of any type to any web enabled device using the web as the network.</p>
<p><small>The following lists aren&#8217;t 100% comprehensive and as time goes by I&#8217;ll probably create some pages on my site dedicated to this information.</small></p>
<p>Here&#8217;s the list of services I&#8217;m aware of and the type of service they offer and technology they use.</p>
<ul>
<li><a  href="http://beaconpush.com">BeaconPush</a> - [Web browser]</li>
<li>Google Channel API (<a  href="http://code.google.com/appengine/docs/python/channel/">Python</a>/<a  href="http://code.google.com/appengine/docs/java/channel/">Java</a>) &#8211; Part of <a  href="http://code.google.com/appengine/">Google App Engine</a> &#8211; [Web browser]</li>
<li><a  href="http://datasift.net">DataSift</a> &#8211; [Server to server, WebSockets, HTTP Streaming]</li>
<li><a  href="http://kwwika.com">Kwwika</a> &#8211; [Web browser, mobile, server to server, Desktop]</li>
<li><a  href="http://hookbox.org">Hookbox</a> &#8211; [Web browser]</li>
<li><a  href="http://notifo.com/">Notifo</a> &#8211; [Mobile]</li>
<li><a  href="http://www.notify.io/">Notify.io</a> &#8211; [Desktop, IM, Email]</li>
<li><a  href="http://notify.me/">Notify.me</a> &#8211; [Mobile, Desktop, IM, Email, XMPP]</li>
<li><a  href="http://pubnub.com">PubNub</a> &#8211; [Web browser, mobile, server to server, Desktop]</li>
<li><a  href="http://pusherapp.com">Pusher</a> &#8211; [Web browser]</li>
<li><a  href="http://superfeedr.com">Superfeedr</a> &#8211; [Server to server, PubSubHubbub, WebSockets, HTTP Streaming]</li>
<li><a  href="http://www.twilio.com/">Twilio</a> &#8211; [Mobile]</li>
<li><a  href="http://urbanairship.com/">Urban Airship</a> &#8211; [Moblie]</li>
</ul>
<p>A quick not of the key technologies behind these types of service:</p>
<ul>
<li><a  href="http://en.wikipedia.org/w/index.php?title=Comet_(programming)&#038;oldid=212288242">Comet</a> (<strong>Note:</strong> this version by <a  href="http://en.wikipedia.org/wiki/User:Jacobolus">Jacobolus</a> (Jacob Rus) is by far the best description. The current wikipedia description, IMHO, is inaccurate and incomplete and was ruined by <a  href="http://en.wikipedia.org/wiki/User:Damiens.rf">Damiens.rf</a>. Damiens.rf even put <a  href="http://en.wikipedia.org/wiki/User:Gregwilkins">Greg Wilkins</a>, who contributes to <a  href="http://jetty.codehaus.org/jetty/">Jetty</a> and <a  href="http://cometd.org/">Cometd</a>, off contributing to Wikipedia all together.)</li>
<li><a  href="http://growl.info/">Growl</a></li>
<li><a  href="http://www.quora.com/HTTP-Streaming">HTTP Streaming</a></li>
<li><a  href="http://code.google.com/p/pubsubhubbub/">PubSubHubbub</a></li>
<li><a  href="http://xmpp.org/">XMPP</a></li>
<li><a  href="http://www.webhooks.org/">Webhooks</a></li>
<li><a  href="http://en.wikipedia.org/wiki/WebSockets">WebSockets</a></li>
</ul>
<p><small><strong>Note:</strong> I originally wrote this as a comment over on <a  href="http://dashes.com/anil/2010/12/delivery-as-a-service.html">Anil Dash&#8217;s post on Delivery as a Service</a> but I thought it was good content so it deserved a post of its own.</small></p>
<p>Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2011/01/07/real-time-data-delivery-http-streaming-versus-pubsubhubbub.html' rel='bookmark' title='Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub'>Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/20/the-real-time-web-techmeetup-aberdeen-19012011.html' rel='bookmark' title='The Real-Time Web: TechMeetup Aberdeen &#8211; 19/01/2011'>The Real-Time Web: TechMeetup Aberdeen &#8211; 19/01/2011</a></li>
<li><a href='http://www.leggetter.co.uk/2010/12/21/why-client-apis-are-an-important-part-of-any-real-time-service.html' rel='bookmark' title='Why client APIs are an important part of any real-time service'>Why client APIs are an important part of any real-time service</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2011/01/08/delivery-as-a-service-and-data-as-a-service-in-2011.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub</title>
		<link>http://www.leggetter.co.uk/2011/01/07/real-time-data-delivery-http-streaming-versus-pubsubhubbub.html</link>
		<comments>http://www.leggetter.co.uk/2011/01/07/real-time-data-delivery-http-streaming-versus-pubsubhubbub.html#comments</comments>
		<pubDate>Fri, 07 Jan 2011 01:30:32 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[beacon]]></category>
		<category><![CDATA[comet]]></category>
		<category><![CDATA[DataSift]]></category>
		<category><![CDATA[google buzz]]></category>
		<category><![CDATA[google wave]]></category>
		<category><![CDATA[http streaming]]></category>
		<category><![CDATA[Kwwika]]></category>
		<category><![CDATA[livecycle]]></category>
		<category><![CDATA[mqtt]]></category>
		<category><![CDATA[notify.me]]></category>
		<category><![CDATA[pubnub]]></category>
		<category><![CDATA[pubsubhubbub]]></category>
		<category><![CDATA[pusher]]></category>
		<category><![CDATA[realtime]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[rssCloud]]></category>
		<category><![CDATA[Superfeedr]]></category>
		<category><![CDATA[webhooks]]></category>
		<category><![CDATA[websockets]]></category>
		<category><![CDATA[XMPP]]></category>

		<guid isPermaLink="false">http://blog.programmableweb.com/?p=17440</guid>
		<description><![CDATA[<a href="http://www.flickr.com/photos/blakespot/4011035061/"><img class="imgRight" src="http://blog.programmableweb.com/wp-content/stopwatch.jpg" alt="Real-time" width="100" height="75" /></a>There are a number of ways of delivering data in real-time but until recently it has looked like <a href="http://code.google.com/apis/pubsubhubbub/">PubSubHubbub</a>, with the backing of Google, was going to be the preferred method. However, the past couple of weeks have seen a couple of interesting developments which could indicate that the developer community may actually prefer HTTP Streaming.
Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2010/07/04/basic-authentication-against-the-superfeedr-http-pubsubhubbub-api-using-a-net-httpwebrequest.html' rel='bookmark' title='Basic Authentication against the Superfeedr HTTP PubSubHubbub API using a .NET HttpWebRequest'>Basic Authentication against the Superfeedr HTTP PubSubHubbub API using a .NET HttpWebRequest</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/12/comment-on-real-time-delivery-explained-post-by-feedmyinbox.html' rel='bookmark' title='Comment on Real-Time Delivery Explained post by feedmyinbox'>Comment on Real-Time Delivery Explained post by feedmyinbox</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/08/delivery-as-a-service-and-data-as-a-service-in-2011.html' rel='bookmark' title='Delivery as a Service and Data as a Service in 2011'>Delivery as a Service and Data as a Service in 2011</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a  href="http://www.flickr.com/photos/blakespot/4011035061/"><img class="imgRight" title="Real-time" src="http://blog.programmableweb.com/wp-content/stopwatch.jpg" alt="Real-time" width="100" height="75" /></a>There are a number of ways of delivering data in real-time but until recently it has looked like <a  href="http://code.google.com/apis/pubsubhubbub/">PubSubHubbub</a>, with the backing of Google, was going to be the preferred method. However, the past couple of weeks have seen a couple of interesting developments which could indicate that the developer community may actually prefer HTTP Streaming.</p>
<p>The emergence of the real-time web has seen an increase in the visibility of technologies that facilitate the delivery of data in real-time. Twitter was most probably the catalyst for this due to the many high profile cases where Twitter has been able to deliver the news before any other traditional news medium; the Hudson river plane crash is probably the best example of this. Some of the real-time technologies include PubSubHubbub, <a  href="http://rsscloud.org/">RSSCloud</a>, <a  href="http://en.wikipedia.org/wiki/Comet_(programming)">Comet</a>, <a  href="http://xmpp.org/xmpp-software/">XMPP</a>, <a  href="http://mqtt.org/">MQTT</a>, <a  href="http://www.adobe.com/products/livecycle/dataservices/">Adobe LiveCycle</a>, <a  href="http://www.waveprotocol.org/">Google Wave Protocol</a>, <a  href="http://wiki.webhooks.org/w/page/13385124/FrontPage">WebHooks</a>, <a  href="http://en.wikipedia.org/wiki/WebSockets">WebSockets</a> and HTTP Streaming to name but a few.</p>
<p>We’ve also seen an increase in the number of real-time services over the past year who have used these technologies. Services such as <a  href="http://beaconpush.com/">Beacon</a>, <a  href="http://datasift.net/">DataSift</a>, <a  href="http://www.google.com/buzz">Google Buzz</a>, <a  href="http://kwwika.com/">Kwwika</a> (disclosure: author is a founder), <a  href="http://notify.me/">notify.me</a>, <a  href="http://www.pubnub.com/">PubNub</a>, <a  href="http://pusherapp.com/">Pusher</a>, <a  href="http://superfeedr.com/">Superfeedr</a> and of course <a  href="http://dev.twitter.com/">Twitter</a>. You can also find a number of other <a  href="http://www.programmableweb.com/apitag/realtime">real-time APIs</a> in our directory.</p>
<p>HTTP Streaming has been generally associated with Ajax in the past. In fact the Wikipedia entry for HTTP Streaming (under the Push Technology page and listed as <a  href="http://en.wikipedia.org/wiki/Push_technology#HTTP_server_push">HTTP server push</a>) talks only about “sending data from a web server to a web browser.” This is out of date and HTTP Streaming is now much more than this. HTTP Streaming takes advantage of the fact that the Internet infrastructure has been built with HTTP in mind (as does PubSubHubbub). HTTP is fully supported so as well as using this protocol to distribute your static content such as HTML, images, CSS and JavaScript why not use it to distribute real-time data as well. The part of the Wikipedia definition for HTTP Streaming that is correct is:</p>
<blockquote><p>Generally the web server does not terminate a connection after response data has been served to a client. The web server leaves the connection open such that if an event is received, it can immediately be sent to one or multiple clients.</p></blockquote>
<p>A client in this context doesn’t have to be a web browser. It can be another web server, a desktop app, a mobile phone app, an embedded program running on a piece of hardware, a web application; basically any web enabled device capable of making a persistent HTTP connection.</p>
<p>This might be why services such as <a  href="http://superfeedr.com/">Superfeedr</a>, who consistently champions PubSubHubbub, have <a  href="http://blog.programmableweb.com/2010/12/20/superfeedr-introduces-real-time-client-push-capabilities/">introduced support for HTTP Streaming</a> and why new services like <a  href="http://datasift.net/">DataSift</a> has provided <a  href="http://support.datasift.net/kb/streaming-api/http-streaming-api">support</a> from almost day one.</p>
<p>So, why are services starting to offer HTTP Streaming? The first thing you may think is that a persistent HTTP connection might be a faster way of receiving data than PubSubHubbub and it’s intermittent HTTP Push requests. Surprisingly this isn’t supposed to be the case since “HTTP 1.1 reuses TCP connections <a  href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html">by default</a>” as I <a  href="http://www.onebigfluke.com/2010/09/common-misconception-explained-by-phil.html">recently found out</a>.</p>
<p>One thing that PubSubHubbub does require is that the push notifications have to be made to a web server. This means that PubSubHubbub is highly unlikely to be used for real-time client data delivery because client applications don’t tend to run their own web server. Therefore HTTP Streaming is a more accessible real-time data delivery mechanism since any technology that can make a web request, and hold a persistent HTTP connection, can receive real-time push notifications. This means that by offering a HTTP Streaming API a service can be consumed by anything from a hardware embedded system to a mobile application as long as they are connected to the Internet.</p>
<p>The other thing that PubSubHubbub does is define the message format. This can be seen as a positive and a negative but since we are seeing <a  href="http://blog.programmableweb.com/2010/12/03/json-continues-its-winning-streak-over-xml/">JSON continuing to win over XML</a> as the preferred data format it looks like PubSubHubbub will have to evolve away from XML to keep up as this <a  href="http://www.quora.com/Why-doesnt-Facebook-implement-PubSubHubbub-as-a-Subscriber">question on Quora suggests</a>.</p>
<p>This is an exciting trend which will most probably continue and will lead to us seeing truly real-time applications on any web-enabled device. It certainly doesn’t signal the end of the road for PubSubHubbub, which has its roots firmly in RSS (and XML), along with so much of the Internet. However, HTTP Streaming could become defacto standard for client push applications.</p>
<p>Photo via <a  href="http://www.blakespot.com/">Blake Patterson</a></p>
<p><a  href="http://blog.programmableweb.com/2011/01/06/real-time-data-delivery-http-streaming-versus-pubsubhubbub/">Originally posted on Programmable Web</a></p>
<p>Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2010/07/04/basic-authentication-against-the-superfeedr-http-pubsubhubbub-api-using-a-net-httpwebrequest.html' rel='bookmark' title='Basic Authentication against the Superfeedr HTTP PubSubHubbub API using a .NET HttpWebRequest'>Basic Authentication against the Superfeedr HTTP PubSubHubbub API using a .NET HttpWebRequest</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/12/comment-on-real-time-delivery-explained-post-by-feedmyinbox.html' rel='bookmark' title='Comment on Real-Time Delivery Explained post by feedmyinbox'>Comment on Real-Time Delivery Explained post by feedmyinbox</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/08/delivery-as-a-service-and-data-as-a-service-in-2011.html' rel='bookmark' title='Delivery as a Service and Data as a Service in 2011'>Delivery as a Service and Data as a Service in 2011</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2011/01/07/real-time-data-delivery-http-streaming-versus-pubsubhubbub.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XMPP PubSub or PubSubHubbub for real-time server push?</title>
		<link>http://www.leggetter.co.uk/2010/09/17/xmpp-pubsub-or-pubsubhubbub-for-real-time-server-push.html</link>
		<comments>http://www.leggetter.co.uk/2010/09/17/xmpp-pubsub-or-pubsubhubbub-for-real-time-server-push.html#comments</comments>
		<pubDate>Fri, 17 Sep 2010 08:32:00 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[comet]]></category>
		<category><![CDATA[pubsubhubbub]]></category>
		<category><![CDATA[real-time data]]></category>
		<category><![CDATA[real-time web]]></category>
		<category><![CDATA[Superfeedr]]></category>
		<category><![CDATA[XMPP]]></category>

		<guid isPermaLink="false">http://leggetter.posterous.com/xmpp-pubsub-or-pubsubhubbub-for-real-time-ser</guid>
		<description><![CDATA[<p>In case you hadn&#8217;t noticed,&#160;<a href="http://leggetter.posterous.com/hit-roond-around-the-heed-head-by-a-faash-fis">when I&#8217;m not getting hit by flying trout</a>, I like to think of myself as a bit of <a href="http://www.leggetter.co.uk/">a real-time web guy</a>. However, there&#8217;s one thing I&#8217;d like clarification on, and I&#8217;m confident somebody will be able to shed some light on this:</p> <p /> What are the differences [...]
Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2011/01/07/real-time-data-delivery-http-streaming-versus-pubsubhubbub.html' rel='bookmark' title='Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub'>Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub</a></li>
<li><a href='http://www.leggetter.co.uk/2010/08/12/the-benefits-of-real-time-push-once.html' rel='bookmark' title='The benefits of Real-Time Push-Once'>The benefits of Real-Time Push-Once</a></li>
<li><a href='http://www.leggetter.co.uk/2010/06/04/chromesafari-webkit-real-time-push-always-loading-indicator.html' rel='bookmark' title='Chrome/Safari (webkit) + real-time push = always loading indicator'>Chrome/Safari (webkit) + real-time push = always loading indicator</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>In case you hadn&#8217;t noticed,&nbsp;<a  href="http://leggetter.posterous.com/hit-roond-around-the-heed-head-by-a-faash-fis">when I&#8217;m not getting hit by flying trout</a>, I like to think of myself as a bit of <a  href="http://www.leggetter.co.uk/">a real-time web guy</a>. However, there&#8217;s one thing I&#8217;d like clarification on, and I&#8217;m confident somebody will be able to shed some light on this:</p>
<p />
<strong>What are the differences between </strong><a  href="http://xmpp.org/extensions/xep-0060.html"><strong>XMPP PubSub</strong></a><strong> and </strong><a  href="http://code.google.com/apis/pubsubhubbub/"><strong>PubSubHubbub</strong></a><strong> and in what situations should each be used?</strong></p>
<p />
I do think I know some details about this but I&#8217;d like what I think I know to be confirmed or indeed corrected.</p>
<p />
My knowledge of the real-time web, and specifically real-time client push, comes from working for&nbsp;<a  href="http://www.caplin.com/">Caplin Systems</a>&nbsp;who pioneered building Comet servers around 10 years ago. From working with Caplin Systems and with Comet servers I&#8217;ve gained an understanding of how connections are made&nbsp;using different technologies&nbsp;and maintained in different scenarios. I also believe that I have a good understanding of what the best connection method is to deliver real-time data whether the delivery be from <strong>server to client using real-time client push</strong> or <strong>server to server using PubSubHubub or XMPP PubSub</strong>.</p>
<p />
<span style="font-size: large;">Persistent Connections</span></p>
<p />
Unless the frequency of data updates is very low, and if you want to truly deliver data in real-time, the best type of connection is a persistent one.</p>
<p />
As well as a persistent connection being able to deliver data faster it also means that your data subscriber does not have to handle a new HTTP connection for each piece of data it receives. This can actually be a really big thing.</p>
<p />
As part of building <a  href="http://kwwika.com">Kwwika</a> I wrote a demo which integrated the real-time server push&nbsp;capabilities&nbsp;of <a  href="http://superfeedr.com">Superfeedr</a> with the real-time client push&nbsp;capabilities&nbsp;of Kwwika to build a <a  href="http://superfeedr.kwwika.com">real-time news reader</a>&nbsp;(RTNR) (<a  href="http://www.leggetter.co.uk/2010/08/26/real-time-news-reader-shows-off-push-to-browser.html">blog article</a>). In order to receive updates from Superfeedr I had to implement a publisher-subscriber outside of the Kwwika infrastructure. I decided to write a&nbsp;<a  href="http://superfeedr.com/documentation#pubsubhubbub">PubSubHubbub</a>&nbsp;implementation in ASP.NET so that I could use a few other <a  href="http://github.com/Kwwika/Kwwika-Components">.NET Kwwika components</a> to easily integrate with Kwwika.</p>
<p />
So,&nbsp;each time Superfeedr has an update for the&nbsp;RTNR&nbsp;it establishes a HTTP connection to the&nbsp;RTNR PubSubhubbub&nbsp;server and sends the update which is then parsed and pushed into Kwwika to be distributed to subscribing web clients. If the&nbsp;RTNR&nbsp;is subscribing to something that is updating really frequently (such as &#8220;google&#8221; using <a  href="http://superfeedr.com/documentation#track">Superfeedr track</a>) then that can mean the&nbsp;RTNR&nbsp;server has to handle a lot of HTTP requests. Since I am running the demo on a small Amazon Windows instance running IIS it doesn&#8217;t take all that long, under a heavy load, for the server to stop responding.</p>
<p />
There must be a better way!</p>
<p />
<span style="font-size: large;">Real-time client push</span></p>
<p />
By way of a comparison let&#8217;s first take a look at real-time client push.</p>
<p />
Before WebSockets provided the simplest way&nbsp;(but as yet not the most reliable since the WebSocket standard is not set in stone and isn&#8217;t supported cross-browser)&nbsp;to achieve real-time push to a web browser the best connection method was to maintain a streaming and persistent HTTP connection from the publisher to the client subscriber (using an IFRAME, XMLHttpRequest or XDomainRequest). The persistent connection means that the connection has already been established so as soon as the publisher has any new data for the subscriber it can instantly be pushed to it. This means that the data can be delivered to the web browser as close to real-time as possible.</p>
<p />
<span style="font-size: large;">Real-time Server Push</span></p>
<p />
<strong>PubSubHubbub</strong></p>
<p />
PubSubHubbub turns things on it&#8217;s head in comparison to real-time client push (it actually uses HTTP as it was designed and it&#8217;s HTTP streaming that uses things in reverse. See <a  href="http://en.wikipedia.org/wiki/Reverse_Ajax">Reverse Ajax</a>.). In this case the publisher still pushes the new data to the subscriber but it does it using a HTTP request. The problem with this is that for each push a new HTTP connection needs to be established and the data then needs to be transferred. Establishing a connection takes time and resources so clearly a single persistent connection is a better solution. This is where I think XMPP PubSub is a better solution.</p>
<p />
<strong>XMPP PubSub</strong></p>
<p />
If you need your data to be delivered in truly real-time (or as close to real-time as web technology will allow) then you have to use a persistent connection between the publisher and the subscriber. It&#8217;s my understanding that since XMPP was developed as an <strong>instant</strong> messaging protocol that it uses a persistent connection.</p>
<p />
<span style="font-size: large;">Conclusion</span></p>
<p />
Here are things as I see them:</p>
<ul>
<li>If you want your data in real-time you should use a persistent connection between the publisher and subscriber.</li>
<li>If you are making a server to server subscription to data that doesn&#8217;t update all that often&nbsp;and instant real-time doesn&#8217;t matter&nbsp;then PubSubHubbub is fine.</li>
<li>If you are making a server to server subscription to data that updates very frequently then you need to use a persistent connection and XMPP PubSub is a must.</li>
</ul>
<p>One thing to also consider is if you are subscribing to multiple sources which update frequently then maintaining a persistent connection to each of those sources, assuming they even allow you to, takes a considerable amount of effort and potentially resource. This is where a service like Superfeedr comes in to its own. They manage the subscriptions and connections to the sources for you which means you only need to maintain one persistent connection to Superfeedr. They do all the heavy lifting so you don&#8217;t have to.</p>
<p><a  href="http://leggetter.posterous.com/xmpp-pubsub-or-pubsubhubbub-for-real-time-ser">Permalink</a><br />
| <a  href="http://leggetter.posterous.com/xmpp-pubsub-or-pubsubhubbub-for-real-time-ser#comment">Leave a comment&nbsp;&nbsp;&raquo;</a></p>
<p>Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2011/01/07/real-time-data-delivery-http-streaming-versus-pubsubhubbub.html' rel='bookmark' title='Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub'>Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub</a></li>
<li><a href='http://www.leggetter.co.uk/2010/08/12/the-benefits-of-real-time-push-once.html' rel='bookmark' title='The benefits of Real-Time Push-Once'>The benefits of Real-Time Push-Once</a></li>
<li><a href='http://www.leggetter.co.uk/2010/06/04/chromesafari-webkit-real-time-push-always-loading-indicator.html' rel='bookmark' title='Chrome/Safari (webkit) + real-time push = always loading indicator'>Chrome/Safari (webkit) + real-time push = always loading indicator</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2010/09/17/xmpp-pubsub-or-pubsubhubbub-for-real-time-server-push.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using real-time web software and technology to distribute events</title>
		<link>http://www.leggetter.co.uk/2010/02/27/using-real-time-web-software-and-technology-to-distribute-events.html</link>
		<comments>http://www.leggetter.co.uk/2010/02/27/using-real-time-web-software-and-technology-to-distribute-events.html#comments</comments>
		<pubDate>Sat, 27 Feb 2010 11:08:36 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Real-Time Web Musings]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[comet]]></category>
		<category><![CDATA[pubsubhubbub]]></category>
		<category><![CDATA[PUSH]]></category>
		<category><![CDATA[real-time web]]></category>

		<guid isPermaLink="false">http://www.leggetter.co.uk/?p=719</guid>
		<description><![CDATA[<p>I&#8217;ve just come across <a href="http://stage.vambenepe.com/">William Vambenepe&#8217;s blog</a> and an article called &#8220;<a href="http://stage.vambenepe.com/archives/1284">Waiting for events (in Cloud APIs)</a>&#8220; where he discusses how an event system is missing from cloud vendor APIs.</p> <p> With my interest in Comet I straight away thought of this as a solution to the notification requirement and it&#8217;s interesting that the [...]
Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2010/10/25/government-invests-200m-in-technology-centres-but-no-mention-of-software-or-information-technology.html' rel='bookmark' title='Government invests £200m in technology centres but no mention of Software or Information Technology'>Government invests £200m in technology centres but no mention of Software or Information Technology</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/07/marriage-worklife-integration-real-time-web-technology-evangelism-kwwika-a-retrospective-of-my-2010.html' rel='bookmark' title='Marriage, Work/life integration, real-time web technology evangelism &amp; Kwwika: A retrospective of my 2010'>Marriage, Work/life integration, real-time web technology evangelism &#038; Kwwika: A retrospective of my 2010</a></li>
<li><a href='http://www.leggetter.co.uk/2009/11/07/which-rich-internet-application-technology-will-dominate.html' rel='bookmark' title='Which Rich Internet Application Technology will dominate?'>Which Rich Internet Application Technology will dominate?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just come across <a  href="http://stage.vambenepe.com/">William Vambenepe&#8217;s blog</a> and an article called &#8220;<a  href="http://stage.vambenepe.com/archives/1284">Waiting for events (in Cloud APIs)</a>&#8220; where he discusses how an event system is missing from cloud vendor APIs.</p>
<p><img class="size-full wp-image-720 alignleft" title="Notification - event" src="http://www.leggetter.co.uk/wp-content/uploads/2010/02/notification_event.jpg" alt="" width="216" height="216" /> With my interest in Comet I straight away thought of this as a solution to the notification requirement and it&#8217;s interesting that the article goes on to talk about subscription management and then moves on to thinking about the delivery mechanism which are all key aspects of a good comet implementation:</p>
<blockquote cite="http://stage.vambenepe.com/archives/1284"><p>How do you deliver notifications? Do you keep HTTP connections open through tricks similar to how self-updating web pages work (e.g. COMET, long polling and soon WebSockets)? Or do you just provide a listener endpoint to which the notifier tries to connect (which, in the case of public cloud deployments, means you need to have a publicly-addressable listener, but hopefully not on the same Cloud infrastructure). Do you use XMPP? AMQP? Email? Can I have you hold my events and let me come pull them?</p></blockquote>
<p><span id="more-719"></span>However, when considering a notification system such as this you need to consider <strong>how frequently</strong> events would actually occur. How often would a new virtual machine in the cloud be spun up? How frequently do virtual machines unexpectedly crash? In relation to events in other scenarios such as stock rate updates or events within the <a  href="http://www.premierleague.com">Premier League</a> between 15:00 and 17:00 on a Saturday, probably not all that frequently.</p>
<p>You also need to think about <strong>what would be consuming the event</strong>. Would it be an application with a user interface that prompts the user to take action or would it be an application with built in logic to handle a virtual machine failure event? If the application is running on a server then there is no reason why that server couldn&#8217;t be informed of the event via a single call to a web service, or maybe using something such as <a  href="http://code.google.com/p/pubsubhubbub/">PUbSubHubbub</a>, rather than holding open a connection to the cloud API &#8211; William describes this as a &#8220;listener endpoint&#8221;. If the application consuming the event is a web application, maybe the application is the cloud vendors VM dashboard, then Comet would be an ideal choice for instant notification.</p>
<p>Frequency of events and the event consuming application are two key things to consider when thinking about the best way to distribute and consume events using real-time web technologies. As an event-based API developer you may need to consider distributing your events in a number of ways to give application developers the choice.</p>
<p>Are there any notification systems out there that can be used by an API developer to easily distribute events in either way?</p>
<p>Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2010/10/25/government-invests-200m-in-technology-centres-but-no-mention-of-software-or-information-technology.html' rel='bookmark' title='Government invests £200m in technology centres but no mention of Software or Information Technology'>Government invests £200m in technology centres but no mention of Software or Information Technology</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/07/marriage-worklife-integration-real-time-web-technology-evangelism-kwwika-a-retrospective-of-my-2010.html' rel='bookmark' title='Marriage, Work/life integration, real-time web technology evangelism &amp; Kwwika: A retrospective of my 2010'>Marriage, Work/life integration, real-time web technology evangelism &#038; Kwwika: A retrospective of my 2010</a></li>
<li><a href='http://www.leggetter.co.uk/2009/11/07/which-rich-internet-application-technology-will-dominate.html' rel='bookmark' title='Which Rich Internet Application Technology will dominate?'>Which Rich Internet Application Technology will dominate?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2010/02/27/using-real-time-web-software-and-technology-to-distribute-events.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Why Comet is key to the Truly Real-Time Web</title>
		<link>http://www.leggetter.co.uk/2009/11/14/why-comet-is-key-to-the-truly-real-time-web.html</link>
		<comments>http://www.leggetter.co.uk/2009/11/14/why-comet-is-key-to-the-truly-real-time-web.html#comments</comments>
		<pubDate>Sat, 14 Nov 2009 21:01:57 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[comet]]></category>
		<category><![CDATA[http polling]]></category>
		<category><![CDATA[http streaming]]></category>
		<category><![CDATA[real-time data]]></category>
		<category><![CDATA[real-time web]]></category>
		<category><![CDATA[truly real-time]]></category>
		<category><![CDATA[truly real-time web]]></category>

		<guid isPermaLink="false">http://www.leggetter.co.uk/?p=565</guid>
		<description><![CDATA[<p>A lot of websites use <a href="http://en.wikipedia.org/wiki/Comet_(programming)#Ajax_with_long_polling">HTTP Polling</a> to update data on on their website or application without the need for the user refreshing the website. This is clearly better than a purely static page, but during the time between each poll the data on the page has the potential of being out of date [...]
Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2010/09/17/xmpp-pubsub-or-pubsubhubbub-for-real-time-server-push.html' rel='bookmark' title='XMPP PubSub or PubSubHubbub for real-time server push?'>XMPP PubSub or PubSubHubbub for real-time server push?</a></li>
<li><a href='http://www.leggetter.co.uk/2009/12/01/the-christmascrunch-nearly-real-time-web-event.html' rel='bookmark' title='The ChristmasCrunch nearly real-time web event'>The ChristmasCrunch nearly real-time web event</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/17/browse-build-and-share-real-time-streams-with-datasift.html' rel='bookmark' title='Browse, Build and Share Real-time Streams with DataSift'>Browse, Build and Share Real-time Streams with DataSift</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>A lot of websites use <a  href="http://en.wikipedia.org/wiki/Comet_(programming)#Ajax_with_long_polling">HTTP Polling</a> to update data on on their website or application without the need for the user refreshing the website. This is clearly better than a purely static page, but during the time between each poll the data on the page has the potential of being out of date (stale) so to make a decision based on the information on a potentially stale page can be a risky one.</p>
<p>The <a  href="http://ajaxpatterns.org/HTTP_Streaming#Goal_Story">normal example</a> given to show the benefits of using <a  href="http://en.wikipedia.org/wiki/Comet_(programming)">Comet</a> to achieve full <a  href="http://en.wikipedia.org/wiki/Push_technology#HTTP_server_push">HTTP streaming</a> and the importance of non-stale data is of a trader making a trade on an out of date price. Another example is given where a person places a bet using odds that are on screen but do not match up with the odds in the betting system.</p>
<p>I just read a <a  href="http://cometdaily.com/2009/11/14/comet-support-for-iis/">post on Comet Daily</a> about a company called <a  href="http://www.frozenmountain.com/">Frozen Mountain</a> who have just released <a  href="http://www.frozenmountain.com/websync/">a component that adds Comet Support for IIS</a>. Along with this they&#8217;ve released a <a  href="http://www.leggetter.co.uk/2009/11/14/why-comet-is-key-to-the-real-time-web.html">video</a> which doesn&#8217;t cover the standard example.<br />
<span id="more-565"></span><br />
<a name="comet-example-video"></a><br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="270" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=4748722&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="270" src="http://vimeo.com/moogaloop.swf?clip_id=4748722&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>It&#8217;s possible that in this example that a polling solution might actually be just as suitable but this is a good demonstration of the benefits of Comet. In the example Comet provides almost instant feedback on the number of available tickets to potential buyers. This has two benefits. The first is that the user (Bob in the video) has less of a chance of missing out on his tickets. The second is more of a commercial benefit in that the user gets instant feedback on the popularity of the event and availability of the tickets and is more likely to make an instant purchase.</p>
<p>Until a solution such as Comet is used the data that a user sees, in a event booking, trading, betting or even search system, cannot be classed as part of the <strong>truly real-time web</strong>.</p>
<p>Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2010/09/17/xmpp-pubsub-or-pubsubhubbub-for-real-time-server-push.html' rel='bookmark' title='XMPP PubSub or PubSubHubbub for real-time server push?'>XMPP PubSub or PubSubHubbub for real-time server push?</a></li>
<li><a href='http://www.leggetter.co.uk/2009/12/01/the-christmascrunch-nearly-real-time-web-event.html' rel='bookmark' title='The ChristmasCrunch nearly real-time web event'>The ChristmasCrunch nearly real-time web event</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/17/browse-build-and-share-real-time-streams-with-datasift.html' rel='bookmark' title='Browse, Build and Share Real-time Streams with DataSift'>Browse, Build and Share Real-time Streams with DataSift</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2009/11/14/why-comet-is-key-to-the-truly-real-time-web.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Caplin Systems Blog Post &#8211; What is the real-time web?</title>
		<link>http://www.leggetter.co.uk/2009/04/28/caplin-systems-blog-post-what-is-the-real-time-web.html</link>
		<comments>http://www.leggetter.co.uk/2009/04/28/caplin-systems-blog-post-what-is-the-real-time-web.html#comments</comments>
		<pubDate>Tue, 28 Apr 2009 15:27:40 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Caplin Systems]]></category>
		<category><![CDATA[comet]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[real-time web]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://www.leggetter.co.uk/?p=167</guid>
		<description><![CDATA[<p>About a week ago I wrote a blog article at work entitled &#8220;<a href="http://blog.caplin.com/2009/04/20/what-is-the-real-time-web/">What is the real-time web?</a>&#8220;. I&#8217;m seeing even more <a href="http://search.twitter.com/search?q=real-time+web">tweets</a> and <a href="http://blogsearch.google.co.uk/blogsearch?q=real-time%20web">posts</a> about the real-time web and I&#8217;d love to hear if other people agree with my opinion on what the real-time web is.</p> <p>View the <a href="http://blog.caplin.com/2009/04/20/what-is-the-real-time-web/">What is the [...]
Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2008/05/20/how-to-install-caplin-systems-liberator-free-edition-on-windows.html' rel='bookmark' title='How to install Caplin Systems&#8217; Liberator Free Edition on Windows'>How to install Caplin Systems&#8217; Liberator Free Edition on Windows</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/12/comment-on-real-time-delivery-explained-post-by-feedmyinbox.html' rel='bookmark' title='Comment on Real-Time Delivery Explained post by feedmyinbox'>Comment on Real-Time Delivery Explained post by feedmyinbox</a></li>
<li><a href='http://www.leggetter.co.uk/2009/07/09/wikipedia-now-has-a-definition-for-real-time-web.html' rel='bookmark' title='Wikipedia now has a definition for Real-Time Web'>Wikipedia now has a definition for Real-Time Web</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>About a week ago I wrote a blog article at work entitled &#8220;<a  href="http://blog.caplin.com/2009/04/20/what-is-the-real-time-web/">What is the real-time web?</a>&#8220;. I&#8217;m seeing even more <a  href="http://search.twitter.com/search?q=real-time+web">tweets</a> and <a  href="http://blogsearch.google.co.uk/blogsearch?q=real-time%20web">posts</a> about the real-time web and I&#8217;d love to hear if other people agree with my opinion on what the real-time web is.</p>
<p>View the <a  href="http://blog.caplin.com/2009/04/20/what-is-the-real-time-web/">What is the real-time web?</a> article <a  href="http://blog.caplin.com/2009/04/20/what-is-the-real-time-web/">here</a>.</p>
<p>Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2008/05/20/how-to-install-caplin-systems-liberator-free-edition-on-windows.html' rel='bookmark' title='How to install Caplin Systems&#8217; Liberator Free Edition on Windows'>How to install Caplin Systems&#8217; Liberator Free Edition on Windows</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/12/comment-on-real-time-delivery-explained-post-by-feedmyinbox.html' rel='bookmark' title='Comment on Real-Time Delivery Explained post by feedmyinbox'>Comment on Real-Time Delivery Explained post by feedmyinbox</a></li>
<li><a href='http://www.leggetter.co.uk/2009/07/09/wikipedia-now-has-a-definition-for-real-time-web.html' rel='bookmark' title='Wikipedia now has a definition for Real-Time Web'>Wikipedia now has a definition for Real-Time Web</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2009/04/28/caplin-systems-blog-post-what-is-the-real-time-web.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is the “real-time web”?</title>
		<link>http://www.leggetter.co.uk/2009/04/20/what-is-the-%e2%80%9creal-time-web%e2%80%9d.html</link>
		<comments>http://www.leggetter.co.uk/2009/04/20/what-is-the-%e2%80%9creal-time-web%e2%80%9d.html#comments</comments>
		<pubDate>Mon, 20 Apr 2009 11:00:54 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[comet]]></category>
		<category><![CDATA[real-time web]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://blog.caplin.com/?p=89</guid>
		<description><![CDATA[Are we really seeing the real-time web? The phrase &#8220;real-time web&#8221; has been streaming its way around the Internet for a while now. It&#8217;s presently being used to describe information being available in search results as soon as it has been published by its author. Examples of this are Twitter...
Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2009/04/28/caplin-systems-blog-post-what-is-the-real-time-web.html' rel='bookmark' title='Caplin Systems Blog Post &#8211; What is the real-time web?'>Caplin Systems Blog Post &#8211; What is the real-time web?</a></li>
<li><a href='http://www.leggetter.co.uk/2010/09/17/xmpp-pubsub-or-pubsubhubbub-for-real-time-server-push.html' rel='bookmark' title='XMPP PubSub or PubSubHubbub for real-time server push?'>XMPP PubSub or PubSubHubbub for real-time server push?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<h2><strong>Are we really seeing the real-time web?</strong></h2>
<p>The phrase &#8220;<em>real-time web</em>&#8221; has been streaming its way around the Internet for a while now. It&#8217;s presently being used to describe information being available in search results as soon as it has been published by its author. Examples of this are Twitter or FriendFeed search.</p>
<p>As far as I&#8217;m aware it was Robert Scoble who made this phrase mainstream. Here&#8217;s an example from the start of February, but by this time Robert had been using the term for a while and a quick Google finds the <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5yZWFkd3JpdGV3ZWIuY29tL2FyY2hpdmVzL2dvb2dsZV9maW5hbmNlX2FuZF90aGVfcmVhbF90aW1lX3dlYi5waHA=">term used</a> as early as June 2008:</p>
<blockquote><p>Let&#8217;s do a search for anyone who has written about the Canon 5D MK II but lets constrain that to posts that have at least one like and at least four comments. <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2ZyaWVuZGZlZWQuY29tL3NlYXJjaD9xPUNhbm9uKzVEK01LK0lJJmFtcDtpbnRpdGxlPSZhbXA7aW5jb21tZW50PSZhbXA7c2VydmljZT0mYW1wO2Zyb209JmFtcDtyb29tPSZhbXA7Y29tbWVudD0mYW1wO2xpa2U9JmFtcDtjb21tZW50cz00JmFtcDtsaWtlcz0x">Here&#8217;s the search</a>. Note that the post I wrote just one minute ago is already in the results page. This is the real-time web. &#8211; Robert Scoble (<a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3Njb2JsZWl6ZXIuY29tLzIwMDkvMDIvMDkvaXMtdGhlLXJlYWwtdGltZS13ZWItYS10aHJlYXQtdG8tZ29vZ2xlLXNlYXJjaC8=">http://scobleizer.com/2009/02/09/is-the-real-time-web-a-threat-to-google-search/</a>)</p>
</blockquote>
<p>Whilst this is an example of something being almost instantly available from search does it really qualify as being &#8220;real-time&#8221;?</p>
<p><span id="more-89"></span><br />
The first thing to do, as others have done, is understand what the term &#8220;real-time&#8221; means. Rather than going into this I recommend you have a read of the wikipedia definition of <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWFsLXRpbWU=">real-time</a> and watch a Kaazing presentation on <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dzIuc3lzLWNvbi5jb20vd2ViaW5hcmFyY2hpdmUuY2ZtP3NraXA9b24mYW1wO3BpZD13Y19hdzhlX2QyX3M0X3QxX2thYXppbmcmYW1wO3JlZ2lkPTMzOTA0">What is the Real-Time Web</a>. There have been fewer attempts at defining &#8220;real-time web&#8221;. Even Wikipedia presently (19/04/2009) lacks a definition.</p>
<p>For me for something to be real-time web it should meet the following criteria:</p>
<ol>
<li>Get up to the second information on a chosen subject.</li>
<li>Make an initial request for information to be delivered across the Internet. Subsequent updates to that information, or information stream, should be delivered as soon as possible without the need to make a additional requests.</li>
<li>Initial information and subsequent updates should be delivered in an acceptable amount of time.</li>
</ol>
<h2>The real-time web experience</h2>
<p>If I go to <a  0="0="title="Phil"" 1="Leggetter" 2="on" 3="3="Twitter""" href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3R3aXR0ZXIuY29tL2xlZ2dldHRlcg==">my twitter homepage</a> I don&#8217;t want to have to refresh the page, by clicking the refresh button, or hitting the F5 key, in order to see new messages from the people that I&#8217;m following. Twitter doesn&#8217;t really want users doing this either as it puts load on their server &#8211; but let&#8217;s leave this for another time.</p>
<div class="wp-caption alignnone" style="width: 220px"><a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3R3aXR0ZXIuY29t"><img title="Twitter" src="http://assets0.twitter.com/images/twitter.png" alt="" width="210" height="49" /></a>
<p class="wp-caption-text">Twitter</p>
</div>
<p>This lack of real-time updates on the Twitter site has lead to a surge in Twitter client applications such as <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy50d2VldGRlY2suY29tLw==">TweetDeck</a> and <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy50d2hpcmwub3JnLw==">Thwirl</a>. These clients simulate real-time by polling the <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2FwaXdpa2kudHdpdHRlci5jb20v">Twitter API</a> at intervals. I&#8217;d like to highlight the word &#8220;<em>simulate</em>&#8221; again and clarify what polling is. What the Twitter client applications are actually doing is making requests to Twitter at periodic intervals to see if the user has had any messages and if they have it displays them, if there are no new messages then it&#8217;s a wasted request.</p>
<div class="wp-caption alignleft" style="width: 290px">
<div style="background-color:black"><img class="alignnone size-full wp-image-548" title="tweetdeck_logo" src="http://blog.caplin.com/wp-content/uploads/tweetdeck_logo.png" alt="tweetdeck_logo" width="251" height="50" /></div>
<p>
<p class="wp-caption-text">TweetDeck</p>
</div>
<div class="wp-caption alignleft" style="width: 290px"><a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy50d2hpcmwub3JnLw=="><img title="Twhirl" src="http://www.twhirl.org/themes/twhirl/logo.jpg" alt="Twhirl" width="220" height="105" /></a>
<p class="wp-caption-text">Twhirl</p>
</div>
<p>A much better model would be for Twitter to notify the client that new messages are available by passing the additional messages straight to the Twitter client.</p>
<h2>Real-time web delivery time</h2>
<p>What determines the amount of time that is acceptable between a message being published and it being received by the consumer (user) depends on the context of its use. For something such as instant messaging or a Twitter conversation the time between publication and consumption can be reasonably large, maybe 10 seconds. However, if the publisher is a trading system sending a price and the consumer is a trader 10 seconds is far too long. By the time the price reaches the trader it may be out of date.</p>
<h2>Real-time technology</h2>
<p><a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3htcHAub3JnLw==">XMPP</a> and <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3NpbXBsZXVwZGF0ZXByb3RvY29sLw==">SUP</a> have been touted as the technology to deliver the real-time web but they appear to be server side solutions or require clients with knowledge of the specific technologies. For a web solution people start to turn to Comet server solutions. Caplin Systems &#8211; the real-time web company &#8211; have had the technology available to deliver real-time data for many years now so I wanted to understand why, only now, has the idea of a &#8220;real-time web&#8221; really taken off.</p>
<div class="wp-caption alignnone" style="width: 220px"><img alt="Caplin Systems" src="http://www.caplin.com/assets/templates/caplin/img/logo.gif" title="Caplin Systems" width="210" height="37" />
<p class="wp-caption-text">Caplin Systems</p>
</div>
<p>Caplin Systems have a high performance scalable <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5jYXBsaW4uY29tL2NhcGxpbnBsYXRmb3JtLz9jdXJhcnRfaWQ9MzY=">real-time comet server called Liberator</a> that can push updates to subscribing clients as soon as it receives information. The clients are:</p>
<ul type="disc">
<li>Java      clients: standalone application or applet</li>
<li>.NET      clients such a windows desktop application or web page embedded      SilverLight widget</li>
<li>JavaScript      clients: any website such as <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3R3aXR0ZXIuY29tLw==">http://twitter.com</a> or <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2ZyaWVuZGZlZWQuY29tLw==">http://friendfeed.com</a></li>
</ul>
<p>Twitter and FriendFeed don&#8217;t use Liberator but they could easily do so. All that needs to be done to integrate <em>Real-time Rich Internet Application</em> (<em>RTRIA</em> ?) functionality to an existing web site is include a JavaScript library called <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5mcmVlbGliZXJhdG9yLmNvbS9kb2N1bWVudGF0aW9uL3NsNGIvaW50cm9kdWN0aW9uLmh0bWw=">SL4B (StreamLink for Browsers)</a>. The <em>RTRIA</em> functionality can then be added to an existing site in the same way that RIA functionality can be introduced to a website using other JavaScript libraries such as <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2pxdWVyeS5jb20v">JQuery</a>. However, in this case the <em>RIA</em> functionality that can be added is a true real-time web experience of data being pushed to the client as soon as it becomes available, without any need for the user to check to see if any new information is available.</p>
<h2>Conclusion</h2>
<p>My opinion is that the instant availability of information via search straight after it&#8217;s published doesn&#8217;t really justify the term &#8220;real-time web&#8221;. To be truely real-time the information needs to be pushed to the user. The true real-time web experience and the technology to achieve this is already here but at the moment few people are aware of it and therefore it&#8217;s not in mainstream use. The ideas behind Comet, the Liberator server and Liberator clients provide technology and infrastructure to push data to clients without the need for polling or a user driven information request. Scalability and side by side integration with existing systems are already possible which means there&#8217;s no reason why existing clients such as websites can&#8217;t start taking advantage of it.</p>
<p>Some relevant links:</p>
<ul style="text-align: left;">
<li><a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5yZWFkd3JpdGV3ZWIuY29tL2FyY2hpdmVzL3NvcnJ5X2dvb2dsZV95b3VfbWlzc2VkX3RoZV9yZWFsX3RpbWVfd2ViLnBocA==">http://www.readwriteweb.com/archives/sorry_google_you_missed_the_real_time_web.php</a></li>
<li><a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5nbmlwY2VudHJhbC5jb20v">http://www.gnipcentral.com/</a></li>
<li><a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3Njb2JsZWl6ZXIuY29tLzIwMDkvMDIvMDkvaXMtdGhlLXJlYWwtdGltZS13ZWItYS10aHJlYXQtdG8tZ29vZ2xlLXNlYXJjaC8=">http://scobleizer.com/2009/02/09/is-the-real-time-web-a-threat-to-google-search/</a></li>
<li><a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3Njb2JsZWl6ZXIuY29tLzIwMDgvMTIvMjEvcnNzLXNob3dzLWl0cy1hZ2UtaW4tcmVhbC10aW1lLXdlYi1zdXAtYW5kLXhtcHAtdG8tdGhlLXJlc2N1ZS8=">http://scobleizer.com/2008/12/21/rss-shows-its-age-in-real-time-web-sup-and-xmpp-to-the-rescue/</a></li>
<li>Kaazing presentation on &#8220;<a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dzIuc3lzLWNvbi5jb20vd2ViaW5hcmFyY2hpdmUuY2ZtP3NraXA9b24mYW1wO3BpZD13Y19hdzhlX2QyX3M0X3QxX2thYXppbmcmYW1wO3JlZ2lkPTMzOTA0">What is real-time web</a>&#8220;</li>
</ul>
<p> <img src="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&#038;post_id=89" width="1" height="1" style="display: none;" /></p>
<p>Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2009/04/28/caplin-systems-blog-post-what-is-the-real-time-web.html' rel='bookmark' title='Caplin Systems Blog Post &#8211; What is the real-time web?'>Caplin Systems Blog Post &#8211; What is the real-time web?</a></li>
<li><a href='http://www.leggetter.co.uk/2010/09/17/xmpp-pubsub-or-pubsubhubbub-for-real-time-server-push.html' rel='bookmark' title='XMPP PubSub or PubSubHubbub for real-time server push?'>XMPP PubSub or PubSubHubbub for real-time server push?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2009/04/20/what-is-the-%e2%80%9creal-time-web%e2%80%9d.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced
Database Caching 23/96 queries in 0.088 seconds using disk: basic

Served from: www.leggetter.co.uk @ 2012-02-04 20:19:41 -->
