<?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; pubsubhubbub</title>
	<atom:link href="http://www.leggetter.co.uk/tag/pubsubhubbub/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>Glug, Glug: Guzzle Ayup a Hosted PubSubHubbub Hub Service</title>
		<link>http://www.leggetter.co.uk/2011/05/18/glug-glug-guzzle-ayup-a-hosted-pubsubhubbub-hub-service.html</link>
		<comments>http://www.leggetter.co.uk/2011/05/18/glug-glug-guzzle-ayup-a-hosted-pubsubhubbub-hub-service.html#comments</comments>
		<pubDate>Wed, 18 May 2011 07:00:22 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[APIs]]></category>
		<category><![CDATA[Atom]]></category>
		<category><![CDATA[Ayup]]></category>
		<category><![CDATA[Guzzle Ayup]]></category>
		<category><![CDATA[Paris]]></category>
		<category><![CDATA[pubsubhubbub]]></category>
		<category><![CDATA[real-time]]></category>
		<category><![CDATA[real-time data]]></category>
		<category><![CDATA[realtime]]></category>
		<category><![CDATA[Redis]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Superfeedr]]></category>

		<guid isPermaLink="false">http://blog.programmableweb.com/?p=19415</guid>
		<description><![CDATA[PubSubHubbub has become the standard protocol for real-time RSS and Atom feed subscription and delivery. But not everybody wants to host their own PubSubHubbub hub in the same way that hardly anybody hosts their own website, and why cloud services in general have become so popular. Guzzle Ayup has entered the market to offer a [...]
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/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/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>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a  href="http://www.programmableweb.com/api/guzzle-ayup"><img src="http://www.programmableweb.com/images/apis/at3641.png" alt="Guzzle Ayup!" class="imgRight" /></a>PubSubHubbub has become the standard protocol for real-time RSS and Atom feed subscription and delivery. But not everybody wants to host their own PubSubHubbub hub in the same way that hardly anybody hosts their own website, and why cloud services in general have become so popular. <a  href="http://ayup.us/">Guzzle Ayup</a> has entered the market to offer a hosted PubSubHubbub hub service.</p>
<p>Since PubSubHubbub has been around for a while it’s relatively easy for a developer to start using a hub such as Guzzle Ayup (Ayup for short). There are a good number of PubSubHubbub <a  href="http://code.google.com/p/pubsubhubbub/wiki/PublisherClients">publisher</a> and <a  href="http://code.google.com/p/pubsubhubbub/wiki/SubscriberClients">subscriber</a> clients that can be used. There is also a reasonable amount of documentation on the subject including the <a  href="http://code.google.com/p/pubsubhubbub/">Google PubSubHubbub home page</a> and <a  href="https://ayup.us/documentation">Ayup’s documentation</a>.</p>
<p>Ayup was created by a web agency based in Paris called <a  href="http://lemonchik.com/">Lemonchik</a> following the requirement to provide notifications to a real-time theme-based news aggregator called <a  href="http://guzzle.it/">Guzzle</a> and for future web and iOS applications that will require real-time notifications. They were so happy with the final implementation that they decided to build a front-end console and offer it as a public service.</p>
<p><img class="aligncenter size-medium wp-image-19418" title="Ayup User Dashboard - Add a feed" src="http://blog.programmableweb.com/wp-content/ayup_dashboard-266x300.png" alt="" width="266" height="300" /></p>
<p>Marca Tatem of Lemonchik (and Guzzle Ayup) explains a bit more about the internals of the the service:</p>
<blockquote><p>The internals of Ayup are fun to look at. It&#8217;s a ruby application with a Sinatra web-service, and everything is happening in high-performance, RAM only, Resque queues (backed with Redis). Ayup structure is in itself completely scalable, adding a server with hundreds of new workers is a matter of minutes.</p>
</blockquote>
<p>Ayup offer a simple pay for what you use pricing policy and allow you to set a notification limit which can be handy in keeping costs down when subscribed feeds update more than expected. They also offer something called Virtual hubs which Marca explains as:</p>
<blockquote><p>Virtual Hubs are PubSubHubbub hubs content publishers can create to push free notifications to subscribers. For example, let&#8217;s say that you want people to be able to receive instant push notifications each time you publish a story, you simply create a virtual hub ([YourHubName].ayup.us) people can subscribe to (with a subscribe request) and notifications will be sent to their http callback for free.</p>
</blockquote>
<p>Marca continues to explain why Virtual Hubs are a good way of encouraging simple and free access to your content:</p>
<blockquote><p>The difference between a virtual hub and the actual ayup&#8217;s hub is that with a virtual hub, you can only send a subscribe request for a topic that belongs to the virtual hub&#8217;s owner. In other words, if you create a virtual hub, I can&#8217;t send a subscribe request for MacRumor&#8217;s RSS feed. If I want to subscribe to many different feeds without limitations, then I&#8217;ll have to create an Ayup account and pay for sent notifications.</p>
</blockquote>
<p>Ayup’s focus for the near future is to keep things simple by delivering a good experience for developers and good quality of service such as fast and constant notifications and clean ATOM.</p>
<p>At the time of writing there are only two hosted PubSubHubbub hub services (<a  href="http://code.google.com/p/pubsubhubbub/wiki/Hubs">Hub implementations and hosted services</a>). The first well-known service <a  href="http://superfeedr.com/">Superfeedr</a> and now there is the welcome addition of a second in <a  href="http://ayup.us/">Guzzle Ayup</a></p>
<p>Originally written by me and <a  href="http://blog.programmableweb.com/2011/05/18/glug-glug-guzzle-ayup-a-hosted-pubsubhubbub-hub-service/">posted on Programmable Web</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/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/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>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2011/05/18/glug-glug-guzzle-ayup-a-hosted-pubsubhubbub-hub-service.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Real-Time Web: TechMeetup Aberdeen &#8211; 19/01/2011</title>
		<link>http://www.leggetter.co.uk/2011/01/20/the-real-time-web-techmeetup-aberdeen-19012011.html</link>
		<comments>http://www.leggetter.co.uk/2011/01/20/the-real-time-web-techmeetup-aberdeen-19012011.html#comments</comments>
		<pubDate>Thu, 20 Jan 2011 12:51:26 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Aberdeen]]></category>
		<category><![CDATA[http streaming]]></category>
		<category><![CDATA[pubsubhubbub]]></category>
		<category><![CDATA[real-time data]]></category>
		<category><![CDATA[real-time web]]></category>
		<category><![CDATA[real-time web platforms]]></category>
		<category><![CDATA[real-time web services]]></category>
		<category><![CDATA[TechMeetup]]></category>
		<category><![CDATA[websockets]]></category>

		<guid isPermaLink="false">http://www.leggetter.co.uk/?p=5479</guid>
		<description><![CDATA[<p>I did my first ever <a href="http://www.techmeetup.co.uk/">TechMeetup</a> talk yesterday in Aberdeen and my chosen subject, unsurprisingly, was The Real-Time Web. We started out discussing what real-time was, then what The Real-Time Web is and when receiving information in real-time mattered. I also went on to cover some of the key real-time web technologies including HTTP [...]
Related posts:<ol>
<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>
<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/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>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I did my first ever <a  href="http://www.techmeetup.co.uk/">TechMeetup</a> talk yesterday in Aberdeen and my chosen subject, unsurprisingly, was <strong>The Real-Time Web</strong>. We started out discussing what real-time was, then what The Real-Time Web is and when receiving information in real-time mattered. I also went on to cover some of the key real-time web technologies including <strong>HTTP Streaming</strong>, <strong>PubSubHubbub</strong> and <strong>WebSockets</strong> and then on to <strong>real-time web services and platforms</strong>.</p>
<p>A big thanks to <a  href="http://twitter.com/#!/aboynejames">@aboynejames</a> for suggesting I do the talk and <a  href="http://www.abdn.ac.uk/~csc228/blog/">Bruce Scharlau</a> for inviting me along. I&#8217;d also like to thank everybody who attended and made me feel very welcome and certainly seemed interested.</p>
<h3>Feedback</h3>
<p>If you where there then please leave a comment letting me know what you thought or just to let me know who you are. If you&#8217;d rather email you can get me using <a href="mailto:phil@leggetter.co.uk?subject=Aberdeen TechMeetup">phil@leggetter.co.uk</a>.</p>
<h3>Video</h3>
<p>Here&#8217;s a video of the first 10 minutes of the talk. Unfortunately the video recorder ran out of batteries.</p>
<div style="text-align:center;"><iframe src="http://player.vimeo.com/video/19060295" width="400" height="227" frameborder="0"></iframe>
<p><a  href="http://vimeo.com/19060295">TM January 2011: Phil Leggetter &#8211; Real-Time Web</a> from <a  href="http://vimeo.com/user2219054">Alan Gardner</a> on <a  href="http://vimeo.com">Vimeo</a>.</p>
</div>
<h3>Presentation and Notes</h3>
<p><iframe src="https://docs.google.com/present/embed?id=dhf7xbgp_184gqqj6hhc&#038;size=m" frameborder="0" width="555" height="451"></iframe></p>
<p>Unfortunately I can&#8217;t find a way of showing my slide notes in the above embeded Google Presentation so here they are in pretty rough form.</p>
<h4>What is Real-Time?</h4>
<p>Respond or react within a predictable time after an event has occurred.</p>
<p>There may also be a maximum time constraint.</p>
<p>Because after that maximum time the information loses value and context.</p>
<p>Maybe we should really call it:<br />
Right-Time</p>
<h4>When does Real-Time matter?</h4>
<p><strong>When does NOW matter?</strong></p>
<p>When do you think being informed of something the instant it occurs really matters?</p>
<ul>
<li><strong>Critical systems</strong>. </li>
<li><strong>Live events</strong> where things lose context.</li>
<li>Systems requiring synchronisation:<br />
The 2Screen experience e.g. <a  href="http://tellylinks.com">TellyLinks.com</a></li>
<li>Interactive/collaborative things e.g. chat, Google Wave, Google Docs (docs, spreadsheets, drawing)</li>
<li><b>Sensor data</b> e.g. Car ABS breaks</li>
<li><strong>Trading</strong>: You&#8217;ve got to be sure you are seeing the correct trade price in order to be able to make a decision on whether to trade or not.</li>
<li><strong>Betting</strong>: You want to make sure you bet at the right odds and you don&#8217;t want clients to be able to bed when the odds have changed.</li>
</ul>
<h4>Evolution of the Web</h4>
<p><strong>From Pull to Push</strong></p>
<p>Although I&#8217;m going to use the Web Browser as the example client the client could of course be anything. Another web server any desktop application, a mobile application, an embedded app on any device.</p>
<p>I&#8217;m also going to focus on HTTP but the mechanisms could be applied to standard TCP socket connections.</p>
<h4>HTTP Pull (Request, Response)</h4>
<p>Note: client. This can be a web browser but doesn&#8217;t have to be.</p>
<p>1) Each request would result in a page reload.<br />
2) Event occurs on server there&#8217;s no way of the server telling the browser.<br />
3) e.g. chat pages where you would need to click the &#8220;Refresh&#8221; button to see what other users are saying </p>
<h4>HTTP Polling</h4>
<p>A user hitting F5 or clicking the refresh button is one manual example.</p>
<p>1) REFRESH-META<br />
2) Then frames<br />
3) XMLHttpRequest -> Outlook web access (ActiveX object) </p>
<p>Check if the information has changed by polling.</p>
<p>The problem with this is you can easily waste requests and it can be resource intensive for both the client and the server.</p>
<p>A large amount of services still take this approach although the web, and the technologies, have evolved to allow for real-time push.</p>
<p>For quite some time I&#8217;ve said if a service uses HTTP Polling when push technology is available and a much better option that <a  href="http://itsnotrealtime.com">it&#8217;s not real-time</a></p>
<h4>HTTP Push</h4>
<p>In this diagram you could replace the Client with Server. The initialization could be classed as a subscription or webhook.</p>
<p>Various techniques have been developed to hold a connection open to a web server from a browser.</p>
<p>Difficulties :</p>
<p>* Proxies/Firewall<br />
* Connection reselience<br />
* Browsers<br />
* Messaging API</p>
<p>Related posts:<ol>
<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>
<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/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>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2011/01/20/the-real-time-web-techmeetup-aberdeen-19012011.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Comment on Real-Time Delivery Explained post by feedmyinbox</title>
		<link>http://www.leggetter.co.uk/2011/01/12/comment-on-real-time-delivery-explained-post-by-feedmyinbox.html</link>
		<comments>http://www.leggetter.co.uk/2011/01/12/comment-on-real-time-delivery-explained-post-by-feedmyinbox.html#comments</comments>
		<pubDate>Wed, 12 Jan 2011 13:46:22 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[brightwurks]]></category>
		<category><![CDATA[feedmyinbox]]></category>
		<category><![CDATA[http streaming]]></category>
		<category><![CDATA[polling]]></category>
		<category><![CDATA[pubsubhubbub]]></category>
		<category><![CDATA[real-time protocol]]></category>

		<guid isPermaLink="false">http://www.leggetter.co.uk/?p=4936</guid>
		<description><![CDATA[<p><a href="http://www.brightwurks.com">Brightwurks</a>, who develop <a href="http://www.feedmyinbox.com/">Feed My Inbox</a>, have just posted a <a href="http://www.brightwurks.com/blog/real-time-delivery-explained">blog article</a> explaining the Real-Time Delivery of blogs, feeds and news to an email inbox. The article discusses polling and real-time protocols. They list the Twitter API as a real-time protocol although they do know it&#8217;s not actually an example of a [...]
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/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/2011/01/10/comment-on-the-rise-of-multi-user-multi-device-tablet-applications-by-kate-ho.html' rel='bookmark' title='Comment on The Rise of Multi-user, Multi-device Tablet Applications by Kate Ho'>Comment on The Rise of Multi-user, Multi-device Tablet Applications by Kate Ho</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a  href="http://www.brightwurks.com">Brightwurks</a>, who develop <a  href="http://www.feedmyinbox.com/">Feed My Inbox</a>, have just posted a <a  href="http://www.brightwurks.com/blog/real-time-delivery-explained">blog article</a> explaining the Real-Time Delivery of blogs, feeds and news to an email inbox. The article discusses polling and real-time protocols. They list the Twitter API as a real-time protocol although they do know it&#8217;s not actually an example of a real-time protocol and explain this later in the post. I&#8217;ve just posted a comment clarifying that although the Twitter API is not a real-time protocol it does use a real-time technology that we are starting to see being used more and more to deliver data in real-time.</p>
<p>Here&#8217;s my comment in full slightly edit to better suit a blog post.</p>
<blockquote><p>As you state the Twitter API is not a real-time protocol. I&#8217;m assuming that you will be using one of Twitters streaming APIs &#8211; either the <a  href="http://dev.twitter.com/pages/streaming_api_methods#statuses-filter">filter API method</a> or maybe the <a  href="http://dev.twitter.com/pages/user_streams">users streams API</a>.</p>
<p>Although not a real-time protocol these are examples of using a HTTP Streaming API to receive instant notifications. HTTP Streaming seems to be becoming the API technology of choice when the speed of notifications really matters and I think we are going to see a lot more APIs offer this. I wrote an article recently on Programmable Web that covers this topic a bit further and discusses <a  href="http://blog.programmableweb.com/2011/01/06/real-time-data-delivery-http-streaming-versus-pubsubhubbub/">HTTP Streaming verses PubSubHubbub</a>.</p>
<p>So, I would suggest you update the real-time protocols section and state HTTP Streaming being another method for real-time data delivery (still not strictly a protocol), use the Twitter API as an example of an API using HTTP Streaming to deliver data in real-time and also update the docs links to point to <a  href="http://dev.twitter.com">dev.twitter.com</a>.</p>
<p>Hope this information is useful.</p></blockquote>
<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/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/2011/01/10/comment-on-the-rise-of-multi-user-multi-device-tablet-applications-by-kate-ho.html' rel='bookmark' title='Comment on The Rise of Multi-user, Multi-device Tablet Applications by Kate Ho'>Comment on The Rise of Multi-user, Multi-device Tablet Applications by Kate Ho</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2011/01/12/comment-on-real-time-delivery-explained-post-by-feedmyinbox.html/feed</wfw:commentRss>
		<slash:comments>1</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>Basic Authentication against the Superfeedr HTTP PubSubHubbub API using a .NET HttpWebRequest</title>
		<link>http://www.leggetter.co.uk/2010/07/04/basic-authentication-against-the-superfeedr-http-pubsubhubbub-api-using-a-net-httpwebrequest.html</link>
		<comments>http://www.leggetter.co.uk/2010/07/04/basic-authentication-against-the-superfeedr-http-pubsubhubbub-api-using-a-net-httpwebrequest.html#comments</comments>
		<pubDate>Sun, 04 Jul 2010 09:58:00 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[pubsubhubbub]]></category>
		<category><![CDATA[Superfeedr]]></category>

		<guid isPermaLink="false">http://blog.kwwika.com/basic-authentication-against-the-superfeedr-h</guid>
		<description><![CDATA[        
	It would appear that setting the Credentials property of a HttpWebRequest still leads to authentication failure against the Superfeedr HTTP PubSubHubbub API. This might be because the way the HttpWebRequest works is that it first waits to be...
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/2008/10/24/how-to-make-a-cross-domain-web-request-with-silverlight-2.html' rel='bookmark' title='How to make a cross domain web request with SilverLight 2'>How to make a cross domain web request with SilverLight 2</a></li>
<li><a href='http://www.leggetter.co.uk/2009/10/30/using-fiddler-to-trick-silverlight-into-allowing-a-crossdomain-web-request.html' rel='bookmark' title='Using Fiddler to trick Silverlight into allowing a crossdomain Web Request'>Using Fiddler to trick Silverlight into allowing a crossdomain Web Request</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>It would appear that setting the Credentials property of a HttpWebRequest still leads to authentication failure against the <a  href="http://superfeedr.com/documentation#pubsubhubbub">Superfeedr HTTP PubSubHubbub API</a>. This might be because the way the HttpWebRequest works is that it first waits to be challenged for credentials via a 401 (not authorized) and then replies with the authentication (<a  href="http://www.west-wind.com/weblog/posts/243915.aspx">more info include PreAuthenticate here</a>).</p>
<p>So, this doesn&#8217;t work:</p>
<pre class="brush: csharp; title: ; notranslate">
string username = &quot;username&quot;;
string password = &quot;password&quot;;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(&quot;url-here&quot;);
request.Credentials = new NetworkCredential(username, password);
</pre>
<p>To work around this you need to force the authentication to be sent. I found the details of how to do this in a blog post by Ian Dykes here:</p>
<p><a  href="http://devproj20.blogspot.com/2008/02/assigning-basic-authorization-http.html">http://devproj20.blogspot.com/2008/02/assigning-basic-authorization-http.html</a></p>
<p>But for fullness here&#8217;s the code:</p>
<pre class="brush: csharp; title: ; notranslate">
string username = &quot;username&quot;;
string password = &quot;password&quot;;
byte[] authBytes = Encoding.UTF8.GetBytes(username + &quot;:&quot; + password.ToCharArray());
request.Headers[&quot;Authorization&quot;] = &quot;Basic &quot; + Convert.ToBase64String(authBytes);
</pre>
<p><a  href="http://blog.kwwika.com/basic-authentication-against-the-superfeedr-h">Permalink</a> </p>
<p>	| <a  href="http://blog.kwwika.com/basic-authentication-against-the-superfeedr-h#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/2008/10/24/how-to-make-a-cross-domain-web-request-with-silverlight-2.html' rel='bookmark' title='How to make a cross domain web request with SilverLight 2'>How to make a cross domain web request with SilverLight 2</a></li>
<li><a href='http://www.leggetter.co.uk/2009/10/30/using-fiddler-to-trick-silverlight-into-allowing-a-crossdomain-web-request.html' rel='bookmark' title='Using Fiddler to trick Silverlight into allowing a crossdomain Web Request'>Using Fiddler to trick Silverlight into allowing a crossdomain Web Request</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2010/07/04/basic-authentication-against-the-superfeedr-http-pubsubhubbub-api-using-a-net-httpwebrequest.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>Real-Time Rich Internet Applications (RTRIA)</title>
		<link>http://www.leggetter.co.uk/2009/10/29/real-time-rich-internet-applications-rtria.html</link>
		<comments>http://www.leggetter.co.uk/2009/10/29/real-time-rich-internet-applications-rtria.html#comments</comments>
		<pubDate>Thu, 29 Oct 2009 10:15:06 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[pubsubhubbub]]></category>
		<category><![CDATA[real-time]]></category>
		<category><![CDATA[real-time data]]></category>
		<category><![CDATA[real-time web]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[rssCloud]]></category>
		<category><![CDATA[RTRIA]]></category>
		<category><![CDATA[silverlight]]></category>

		<guid isPermaLink="false">http://www.leggetter.co.uk/?p=456</guid>
		<description><![CDATA[<p>Real-Time Rich Internet Applications (RTRIAs) are <a href="http://en.wikipedia.org/wiki/Rich_Internet_application">RIA</a>s 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 [...]
Related posts:<ol>
<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>
<li><a href='http://www.leggetter.co.uk/2011/01/10/comment-on-the-rise-of-multi-user-multi-device-tablet-applications-by-kate-ho.html' rel='bookmark' title='Comment on The Rise of Multi-user, Multi-device Tablet Applications by Kate Ho'>Comment on The Rise of Multi-user, Multi-device Tablet Applications by Kate Ho</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><strong>Real-Time Rich Internet Applications</strong> (<strong>RTRIA</strong>s) are <a  href="http://en.wikipedia.org/wiki/Rich_Internet_application">RIA</a>s 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.</p>
<p>I mentioned <strong>RTRIA</strong>s for the first time back in April 2009 in a post called &#8220;<a  href="http://blog.caplin.com/2009/04/20/what-is-the-real-time-web/">What is the real-time web</a>&#8221; on the Caplin Systems Platformability blog, and since then there has been a real-time web explosion. The &#8220;real-time web&#8221; is now <strong>the</strong> buzz phrase around the Internet that everybody is jumping on. Back in April I set up a <a  href="http://www.google.com/alerts">Google Alert</a> for the term &#8220;real-time web&#8221;. 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, <a  href="http://rsscloud.org/">rssCloud</a>, <a  href="http://code.google.com/p/pubsubhubbub/">pubsubhubbub</a>, the list goes on. <em>This is not the real-time web!</em> Whilst some of the things on this list will help  the web become <em>truly real-time</em> (rssCloud and pubsubhubbub may even form the back bone), none of these things give the user a truly real-time web experience.</p>
<p><span id="more-456"></span></p>
<p>My opinion about what the real-time web is has not changed from that <a  href="http://blog.caplin.com/2009/04/20/what-is-the-real-time-web/">first blog post</a>. For me, it&#8217;s not just about <em>data being available</em> as soon as it&#8217;s been published. In this situation the user still has to actively make a request to see if any data is available. Instead it&#8217;s about making a single request for data (a <em>subscription</em>) 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 <em>truly real-time</em>.</p>
<div id="attachment_463" class="wp-caption alignnone" style="width: 669px"><a  href="http://www.leggetter.co.uk/wp-content/uploads/2009/10/real-time-web-twitter-search.png" class="thickbox no_icon" rel="gallery-456" title="Twitter &quot;real-time web&quot; search results"><img class="size-full wp-image-463" title="Twitter &quot;real-time web&quot; search results" src="http://www.leggetter.co.uk/wp-content/uploads/2009/10/real-time-web-twitter-search.png" alt="&quot;Real-Time&quot;" width="659" height="429" /></a><p class="wp-caption-text">&quot;Real-Time?&quot;</p></div>
<p>In my opinion the only way to guarantee being able to deliver <em>truly real-time data</em> (<strong>TRTD</strong>) to a web application is by maintaining a streaming connection to the source of the data using a <em>continuous</em> streaming HTTP connection. Most web applications use a technique called polling or <a  href="http://en.wikipedia.org/wiki/Push_technology#Long_polling">long polling</a> to retrieve their data which means that although the data is initially &#8220;fresh&#8221;, within seconds it could be out of date, or more information may be available. I&#8217;ll discuss server technologies further in a later post.</p>
<p>At the moment there are a number of technologies that allow you to develop RTRIAs. <a  href="http://en.wikipedia.org/wiki/Ajax_(programming)">Ajax</a>, <a  href="http://www.microsoft.com/SILVERLIGHT/overview/default.aspx">Silverlight</a> and <a  href="http://www.adobe.com/flashplatform/">Flash</a> are the three mainstream solutions. The core barriers to RTRIAs are the scalability of server technology and access to truly real-time data.</p>
<p>Related posts:<ol>
<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>
<li><a href='http://www.leggetter.co.uk/2011/01/10/comment-on-the-rise-of-multi-user-multi-device-tablet-applications-by-kate-ho.html' rel='bookmark' title='Comment on The Rise of Multi-user, Multi-device Tablet Applications by Kate Ho'>Comment on The Rise of Multi-user, Multi-device Tablet Applications by Kate Ho</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/2009/10/29/real-time-rich-internet-applications-rtria.html/feed</wfw:commentRss>
		<slash:comments>2</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 27/99 queries in 0.072 seconds using disk: basic

Served from: www.leggetter.co.uk @ 2012-02-04 21:24:57 -->
