<?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"
	>

<channel>
	<title>Comet Daily</title>
	<atom:link href="http://cometdaily.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://cometdaily.com</link>
	<description>Information about Comet techniques.</description>
	<pubDate>Tue, 16 Jun 2009 07:05:40 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Quick Introduction to Orbited</title>
		<link>http://cometdaily.com/2009/06/16/quick-introduction-to-orbited/</link>
		<comments>http://cometdaily.com/2009/06/16/quick-introduction-to-orbited/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 07:05:40 +0000</pubDate>
		<dc:creator>DylanSchiemann</dc:creator>
		
		<category><![CDATA[Musings]]></category>

		<category><![CDATA[orbited]]></category>

		<guid isPermaLink="false">http://cometdaily.com/?p=464</guid>
		<description><![CDATA[Starting Out with Comet (Orbited) is the first in a planned series of articles by Dave Fowler on getting up to speed with Comet.]]></description>
			<content:encoded><![CDATA[<p><a href="http://thingsilearned.com/2009/06/09/starting-out-with-comet-orbited-part-1/">Starting Out with Comet (Orbited)</a> is the first in a planned series of articles by Dave Fowler on getting up to speed with Comet.  If you&#8217;re thinking about using Orbited, it&#8217;s a good introduction to the Comet concepts that are relevant to a new user.</p>


<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fcometdaily.com%2F2009%2F06%2F16%2Fquick-introduction-to-orbited%2F&amp;title=Quick+Introduction+to+Orbited" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcometdaily.com%2F2009%2F06%2F16%2Fquick-introduction-to-orbited%2F&amp;title=Quick+Introduction+to+Orbited" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fcometdaily.com%2F2009%2F06%2F16%2Fquick-introduction-to-orbited%2F&amp;title=Quick+Introduction+to+Orbited" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fcometdaily.com%2F2009%2F06%2F16%2Fquick-introduction-to-orbited%2F&amp;title=Quick+Introduction+to+Orbited" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fcometdaily.com%2F2009%2F06%2F16%2Fquick-introduction-to-orbited%2F&amp;title=Quick+Introduction+to+Orbited', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcometdaily.com%2F2009%2F06%2F16%2Fquick-introduction-to-orbited%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fcometdaily.com%2F2009%2F06%2F16%2Fquick-introduction-to-orbited%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fcometdaily.com%2F2009%2F06%2F16%2Fquick-introduction-to-orbited%2F&amp;title=Quick+Introduction+to+Orbited" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fcometdaily.com%2F2009%2F06%2F16%2Fquick-introduction-to-orbited%2F&amp;title=Quick+Introduction+to+Orbited" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://cometdaily.com/2009/06/16/quick-introduction-to-orbited/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Jabbify</title>
		<link>http://cometdaily.com/2009/06/14/jabbify/</link>
		<comments>http://cometdaily.com/2009/06/14/jabbify/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 03:05:32 +0000</pubDate>
		<dc:creator>Kris Zyp</dc:creator>
		
		<category><![CDATA[Musings]]></category>

		<category><![CDATA[jabbify]]></category>

		<guid isPermaLink="false">http://cometdaily.com/?p=462</guid>
		<description><![CDATA[Jupiter IT recently released Jabbify, a service for providing Comet capabilities.]]></description>
			<content:encoded><![CDATA[<p><a href="http://jupiterit.com/">Jupiter IT</a> recently released <a href="http://www.jabbify.com/">Jabbify</a>, a service for providing Comet capabilities. Jabbify utilizes JSONP to connect to the central Jabbify server, allowing developers to add Comet capabilities to their application without needing to setup their own Comet server. Jabbify uses a publish/subscribe paradigm for message routing and they used the <a href="http://www.openajax.org/">OpenAjax</a> <a href="http://www.openajax.org/member/wiki/OpenAjax_Hub_1.0_Specification">hub API</a> for making subscriptions and publishing messages. The Jabbify server uses <a href="http://mortbay.org/">Jetty</a> for efficient Comet communication.</p>


<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fcometdaily.com%2F2009%2F06%2F14%2Fjabbify%2F&amp;title=Jabbify" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcometdaily.com%2F2009%2F06%2F14%2Fjabbify%2F&amp;title=Jabbify" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fcometdaily.com%2F2009%2F06%2F14%2Fjabbify%2F&amp;title=Jabbify" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fcometdaily.com%2F2009%2F06%2F14%2Fjabbify%2F&amp;title=Jabbify" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fcometdaily.com%2F2009%2F06%2F14%2Fjabbify%2F&amp;title=Jabbify', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcometdaily.com%2F2009%2F06%2F14%2Fjabbify%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fcometdaily.com%2F2009%2F06%2F14%2Fjabbify%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fcometdaily.com%2F2009%2F06%2F14%2Fjabbify%2F&amp;title=Jabbify" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fcometdaily.com%2F2009%2F06%2F14%2Fjabbify%2F&amp;title=Jabbify" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://cometdaily.com/2009/06/14/jabbify/feed/</wfw:commentRss>
		</item>
		<item>
		<title>GroovyDB Adds Web Push</title>
		<link>http://cometdaily.com/2009/05/11/groovydb-adds-web-push/</link>
		<comments>http://cometdaily.com/2009/05/11/groovydb-adds-web-push/#comments</comments>
		<pubDate>Mon, 11 May 2009 07:02:19 +0000</pubDate>
		<dc:creator>Alessandro Alinone</dc:creator>
		
		<category><![CDATA[Musings]]></category>

		<category><![CDATA[DB]]></category>

		<category><![CDATA[Lightstreamer]]></category>

		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://cometdaily.com/?p=463</guid>
		<description><![CDATA[GroovyDB is an appliance made by GroovyChannel that provides "SQL Virtualization" technology. It will be offered as a hosted "Cloud" service too.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.groovychannel.com/index.php?option=com_content&amp;task=view&amp;id=5&amp;Itemid=18">GroovyDB</a> is an appliance made by <a href="http://www.groovychannel.com/">GroovyChannel</a> that provides &#8220;SQL Virtualization&#8221; technology. It will be offered as a hosted &#8220;Cloud&#8221; service too.</p>
<p>They recently added Web Push capabilities, so that any changes to the data are reflected in real-time through a web front-end. The Comet server used by GroovyDB is <a href="http://www.lightstreamer.com">Lightstreamer</a>.</p>
<p>Their site hosts a <a href="http://www.groovychannel.com/demos/ajaxPushDemo/index.html">live demo</a> of news pushed in real-time from the GroovyDB.</p>
<p>The Lightstreamer Adapter they developed is also available for <a href="http://www.groovychannel.com/index.php?option=com_content&amp;task=view&amp;id=8&amp;Itemid=9">download</a>.</p>


<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fcometdaily.com%2F2009%2F05%2F11%2Fgroovydb-adds-web-push%2F&amp;title=GroovyDB+Adds+Web+Push" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcometdaily.com%2F2009%2F05%2F11%2Fgroovydb-adds-web-push%2F&amp;title=GroovyDB+Adds+Web+Push" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fcometdaily.com%2F2009%2F05%2F11%2Fgroovydb-adds-web-push%2F&amp;title=GroovyDB+Adds+Web+Push" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fcometdaily.com%2F2009%2F05%2F11%2Fgroovydb-adds-web-push%2F&amp;title=GroovyDB+Adds+Web+Push" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fcometdaily.com%2F2009%2F05%2F11%2Fgroovydb-adds-web-push%2F&amp;title=GroovyDB+Adds+Web+Push', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcometdaily.com%2F2009%2F05%2F11%2Fgroovydb-adds-web-push%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fcometdaily.com%2F2009%2F05%2F11%2Fgroovydb-adds-web-push%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fcometdaily.com%2F2009%2F05%2F11%2Fgroovydb-adds-web-push%2F&amp;title=GroovyDB+Adds+Web+Push" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fcometdaily.com%2F2009%2F05%2F11%2Fgroovydb-adds-web-push%2F&amp;title=GroovyDB+Adds+Web+Push" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://cometdaily.com/2009/05/11/groovydb-adds-web-push/feed/</wfw:commentRss>
		</item>
		<item>
		<title>RFID + Comet = Browser-based Card Reading Goodness</title>
		<link>http://cometdaily.com/2009/04/22/rfid-comet-browser-based-card-reading-goodness/</link>
		<comments>http://cometdaily.com/2009/04/22/rfid-comet-browser-based-card-reading-goodness/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 07:01:58 +0000</pubDate>
		<dc:creator>AndrewBetts</dc:creator>
		
		<category><![CDATA[Musings]]></category>

		<category><![CDATA[meteor]]></category>

		<category><![CDATA[rfid]]></category>

		<guid isPermaLink="false">http://cometdaily.com/?p=461</guid>
		<description><![CDATA[I've recently come across a brilliant new use of Comet for a browser-based RFID card reader.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently come across a brilliant new use of comet in an application designed by <a href='http://blog.rot13.org/2009/04/comet_experiment_rfid_reader_with_koha_data_in_browser.html'>Dobrica Pavlinušić</a>, a <a href='http://meteorserver.org'>meteor</a> user.  The video says it all, though the music is probably best experienced on mute <img src='http://cometdaily.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/ptWv4fFJ6Q8&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/ptWv4fFJ6Q8&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>Dobrica writes:</p>
<blockquote><p>I already blogged about RFID readers but now I really need to replace antique 3M software with something better. So, basically, I started with specification:</p>
<p>User should put RFID tag on reader and get output from Koha </p>
<p>Nice and simple. However, readers are connected to Windows machine. And we need some way for reader to push data about new tag to browser. Hmmm&#8230; push? Sound like Comet, doesn&#8217;t it?</p>
<p>Let&#8217;s see what we need:</p>
<ol>
<li>Comet server to display page in web browser and push updates</li>
<li>RFID reader program installable on Windows to communicate with serial port and push messages to Comet server</li>
<li>User with a browser</li>
</ol>
</blockquote>
<p>I particularly like this because RFID driver software is often appalling, and it&#8217;s nice to see some of the principles of building the rich internet applications that we love to use extended to breathe fresh life into the way we interact with embedded systems.</p>


<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F22%2Frfid-comet-browser-based-card-reading-goodness%2F&amp;title=RFID+%2B+Comet+%3D+Browser-based+Card+Reading+Goodness" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F22%2Frfid-comet-browser-based-card-reading-goodness%2F&amp;title=RFID+%2B+Comet+%3D+Browser-based+Card+Reading+Goodness" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F22%2Frfid-comet-browser-based-card-reading-goodness%2F&amp;title=RFID+%2B+Comet+%3D+Browser-based+Card+Reading+Goodness" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F22%2Frfid-comet-browser-based-card-reading-goodness%2F&amp;title=RFID+%2B+Comet+%3D+Browser-based+Card+Reading+Goodness" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F22%2Frfid-comet-browser-based-card-reading-goodness%2F&amp;title=RFID+%2B+Comet+%3D+Browser-based+Card+Reading+Goodness', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F22%2Frfid-comet-browser-based-card-reading-goodness%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F22%2Frfid-comet-browser-based-card-reading-goodness%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F22%2Frfid-comet-browser-based-card-reading-goodness%2F&amp;title=RFID+%2B+Comet+%3D+Browser-based+Card+Reading+Goodness" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F22%2Frfid-comet-browser-based-card-reading-goodness%2F&amp;title=RFID+%2B+Comet+%3D+Browser-based+Card+Reading+Goodness" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://cometdaily.com/2009/04/22/rfid-comet-browser-based-card-reading-goodness/feed/</wfw:commentRss>
		</item>
		<item>
		<title>TelegraphFail: Make sure you use your OWN data</title>
		<link>http://cometdaily.com/2009/04/21/telegraphfail-make-sure-you-use-your-own-data/</link>
		<comments>http://cometdaily.com/2009/04/21/telegraphfail-make-sure-you-use-your-own-data/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 22:44:33 +0000</pubDate>
		<dc:creator>AndrewBetts</dc:creator>
		
		<category><![CDATA[Musings]]></category>

		<category><![CDATA[meteor]]></category>

		<guid isPermaLink="false">http://cometdaily.com/?p=458</guid>
		<description><![CDATA[It pains me to think of how frequently this happens and wonder why media companies still think it's cool to allow unfiltered user generated content onto their sites. ]]></description>
			<content:encoded><![CDATA[<p>It pains me to think of how frequently this happens and wonder why media companies still think it&#8217;s cool to allow unfiltered user generated content onto their sites.  <a href='http://www.telegraph.co.uk'>The Daily Telegraph</a>, one of the main centre-right newspapers in the UK, has an editor in love with Twitter and Comet in equal measure, and as a result devoted a large amount of screen real estate to a live <a href='http://twitterfall.com'>twitterfall</a> feed in anticipation of our upcoming budget:</p>
<p><a href='http://cometdaily.com/wp-content/uploads/2009/04/6027.jpg'><img src="http://cometdaily.com/wp-content/uploads/2009/04/6027-300x188.jpg" alt="" title="Telegraph budget page" width="300" height="188" class="alignnone size-medium wp-image-459" /></a></p>
<p>Twitterfall is a real time twitter feed hosted on <a href='http://www.amazonaws.com'>EC2</a> and using <a href='http://meteorserver.org'>Meteor</a> for Comet.  It simply streams tweets onto your page based on filters you can define.  Unfortunately for the Telegraph, the only filter they set up was the hashtag #budget.</p>
<p>See the results for yourself:</p>
<p><a href='http://cometdaily.com/wp-content/uploads/2009/04/6033.jpg'><img src="http://cometdaily.com/wp-content/uploads/2009/04/6033.jpg" alt="" title="Telegraph tweets" width="321" height="434" class="alignnone size-full wp-image-460" /></a></p>
<p>And so it went on, and on, until the widget made a sudden and mysterious disappearance about three hours after it was published.  The moral of this story?  Try to resist the urge to stream unfiltered user generated content directly onto your prestige pages. <img src='http://cometdaily.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>


<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F21%2Ftelegraphfail-make-sure-you-use-your-own-data%2F&amp;title=TelegraphFail%3A+Make+sure+you+use+your+OWN+data" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F21%2Ftelegraphfail-make-sure-you-use-your-own-data%2F&amp;title=TelegraphFail%3A+Make+sure+you+use+your+OWN+data" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F21%2Ftelegraphfail-make-sure-you-use-your-own-data%2F&amp;title=TelegraphFail%3A+Make+sure+you+use+your+OWN+data" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F21%2Ftelegraphfail-make-sure-you-use-your-own-data%2F&amp;title=TelegraphFail%3A+Make+sure+you+use+your+OWN+data" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F21%2Ftelegraphfail-make-sure-you-use-your-own-data%2F&amp;title=TelegraphFail%3A+Make+sure+you+use+your+OWN+data', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F21%2Ftelegraphfail-make-sure-you-use-your-own-data%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F21%2Ftelegraphfail-make-sure-you-use-your-own-data%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F21%2Ftelegraphfail-make-sure-you-use-your-own-data%2F&amp;title=TelegraphFail%3A+Make+sure+you+use+your+OWN+data" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F21%2Ftelegraphfail-make-sure-you-use-your-own-data%2F&amp;title=TelegraphFail%3A+Make+sure+you+use+your+OWN+data" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://cometdaily.com/2009/04/21/telegraphfail-make-sure-you-use-your-own-data/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Stocker: Advanced Dojo Made Easy</title>
		<link>http://cometdaily.com/2009/04/02/stocker-advanced-dojo-made-easy/</link>
		<comments>http://cometdaily.com/2009/04/02/stocker-advanced-dojo-made-easy/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 14:00:51 +0000</pubDate>
		<dc:creator>DylanSchiemann</dc:creator>
		
		<category><![CDATA[Musings]]></category>

		<category><![CDATA[dojo]]></category>

		<category><![CDATA[jetty]]></category>

		<category><![CDATA[Persevere]]></category>

		<category><![CDATA[stocker]]></category>

		<guid isPermaLink="false">http://cometdaily.com/?p=457</guid>
		<description><![CDATA[Stocker, and which makes it very easy to get Dojo working with Persevere and Jetty to display real-time updates to a DataGrid and DataChart.]]></description>
			<content:encoded><![CDATA[<p>At SitePen, we have just announced a new demo application, <a href="http://www.sitepen.com/blog/2009/04/01/stocker-advanced-dojo-made-easy/">Stocker</a>, which makes it very easy to get Dojo working with Persevere and Jetty to display real-time updates to a DataGrid and DataChart.  The demo includes a full tutorial, and I&#8217;ll also be offering <a href="http://sitepen.com/training">one-day workshops in Sydney, London, Stockholm, Milan, and Paris</a> where we&#8217;ll work on building Stocker in one-day.</p>


<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F02%2Fstocker-advanced-dojo-made-easy%2F&amp;title=Stocker%3A+Advanced+Dojo+Made+Easy" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F02%2Fstocker-advanced-dojo-made-easy%2F&amp;title=Stocker%3A+Advanced+Dojo+Made+Easy" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F02%2Fstocker-advanced-dojo-made-easy%2F&amp;title=Stocker%3A+Advanced+Dojo+Made+Easy" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F02%2Fstocker-advanced-dojo-made-easy%2F&amp;title=Stocker%3A+Advanced+Dojo+Made+Easy" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F02%2Fstocker-advanced-dojo-made-easy%2F&amp;title=Stocker%3A+Advanced+Dojo+Made+Easy', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F02%2Fstocker-advanced-dojo-made-easy%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F02%2Fstocker-advanced-dojo-made-easy%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F02%2Fstocker-advanced-dojo-made-easy%2F&amp;title=Stocker%3A+Advanced+Dojo+Made+Easy" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fcometdaily.com%2F2009%2F04%2F02%2Fstocker-advanced-dojo-made-easy%2F&amp;title=Stocker%3A+Advanced+Dojo+Made+Easy" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://cometdaily.com/2009/04/02/stocker-advanced-dojo-made-easy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ajax, Flex or Silverlight?</title>
		<link>http://cometdaily.com/2009/03/30/comet-ajax-flex-and-silverlight/</link>
		<comments>http://cometdaily.com/2009/03/30/comet-ajax-flex-and-silverlight/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 07:10:56 +0000</pubDate>
		<dc:creator>Martin Tyler</dc:creator>
		
		<category><![CDATA[articles]]></category>

		<category><![CDATA[ajax]]></category>

		<category><![CDATA[Comet]]></category>

		<category><![CDATA[flex]]></category>

		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://cometdaily.com/?p=456</guid>
		<description><![CDATA[What factors go into the decision of choosing between Ajax, Flash, and Silverlight for your Comet applications?]]></description>
			<content:encoded><![CDATA[<p>Although Comet is a term originally coined to describe a general technique, the focus has always been on pure JavaScript clients, and the term is often restricted to JavaScript.</p>
<p>Some of the more mature Comet servers also provide APIs in other languages to access the same functionality that the browser JavaScript client can access. These APIs have mainly been for standalone applications using Java and .Net or for testing, but also for other browser technologies such as Flex, and more recently Silverlight.</p>
<p>At Caplin, a number of our customers use our Java client API, for applications and for browser applets. Recently some customers have also used our .Net client API.</p>
<p>Our focus has always been on the browser though and in recent years we have invested a lot of time on our products surrounding the core <a href="http://www.freeliberator.com">Comet server</a>, including <a href="http://www.caplin.com/caplintrader/">Caplin Trader</a>, a rich Trading browser front end</a>. Being Ajax, Caplin Trader can host Flex, Silverlight, and Java components. We demonstrate the use of these technologies in Caplin Trader, but as yet do not provide easy to use extension points or APIs. In Caplin Trader all of our standard display components, the business logic, and the layout management are written in JavaScript. Few browser applications are as advanced as this. Maybe some of the web desktop style demos come close, but unlike Caplin Trader, they appear to be technical showcases rather than real world applications.</p>
<h3>Flex</h3>
<p>Despite the buzz around Ajax in many communities, it is still a barrier for some large corporations and we come up against people wanting to write Trading front-ends in Flex. We have both won and lost these battles, and time may tell who was right, but most likely there will not be a clear cut conclusion.</p>
<p>I have thought long and hard about the choice. It is not a straight Ajax versus Flex debate, because we are selling a framework that happens to use Ajax and has lots of pre-built functionality, on both the client and the server-side. Our goal is to make our front end is a lot more customisable and extensible without having to write any JavaScript at all&mdash;at the moment some customisation is like this and some requires you to break out the text editor and write some code. This is often the scary part for a customer; the tech team may be unfamiliar with JavaScript development, but have people more attuned to Flex development, or at least with Flex they feel they are using something more akin to the kind of development they are used to. Flex provides a more straightforward development package. It is provided by a single source, Adobe. Some people may be put off by having to pick and choose from a whole host of Ajax libraries and tools.</p>
<p>Flex can give you a fairly instant feel-good factor. It has an Eclipse based GUI builder that makes you think you have achieved something very quickly. Adding any real world functionality to a dumb GUI obviously takes some time though, but often the technology decision has been made by then.</p>
<p>Adobe also provides Comet like abilities through their LiveCycle Data Services product. This can be integrated with the back-end using JMS; again the Developer familiarity bell rings here, but that does not necessarily make it the right tool for the job. It is generic, which can be advantageous, but you will probably be reinventing the wheel.</p>
<p>So why do people choose Flex? Being an Ajax focused Comet site I&#8217;d expect a slightly biased view here, but I am interested in what it is people like about Flex. Are there things the Ajax community needs to do to combat some of things mentioned here?</p>
<h3>Silverlight</h3>
<p>Then we get to Silverlight. Unfortunately Microsoft has not made it as easy for software vendors to create Silverlight APIs from a standalone .Net API as you would hope. I believe Lightstreamer has had a .Net client API for some time, but have only just released a beta of a Silverlight API. I am assuming this was not because the Silverlight API is totally different, but due to the hurdles of the technology.</p>
<p>Silverlight and Flex are both moving targets to a certain extent. Some aspects of Flex require the latest Flash plug-ins that do not have the vast install base of the previous versions. Silverlight 3 will be released sometime this year, and appears to add a lot of new functionality.</p>
<p>How do people in this space view Silverlight? At Caplin, we have not yet had to face off against someone wanting to develop their own Silverlight trading application, but I can see this happening in the not too distant future. I imagine that Silverlight has many of the advantages of Flex, and possibly many more, but will it catch on and will it pose a threat to Ajax?</p>
<p><strong>Conclusion</strong></p>
<p>Flex and Silverlight both provide advantages over Ajax development, or at least perceived advantages. The wealth of Ajax technology out there is both an advantage and a disadvantage, for some the simplicity of going with the single vendor solution is the easy choice. In a large organisation the old adage &#8216;Nobody ever got fired for buying IBM&#8217; might apply here, I think some development teams are choosing the safe route, which in a lot of cases might not be the best option.</p>
<p>When the choice to build something from scratch is Flex/Silverlight versus Ajax, I can understand why some would go with Flex or Silverlight. However, when the choice is building it yourself with Flex/Silverlight versus using a more complete existing Ajax solution the balance is tipped firmly towards Ajax. This does not just apply to Caplin Trader&mdash;there are other Ajax based solutions in all kinds of sectors that offer far more than a programming library.</p>
<p>I have not said much about native Comet support in Flex or Silverlight, as I do not think it is the key factor here. Adobe provides LiveCycle Data Services, Microsoft do not seem to provide anything like this yet&mdash;and some other vendors support Flex and/or Silverlight with their Comet servers. Alternatively JavaScript can be used to bridge into these technologies which allows you to mix and match.</p>


<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F30%2Fcomet-ajax-flex-and-silverlight%2F&amp;title=Ajax%2C+Flex+or+Silverlight%3F" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F30%2Fcomet-ajax-flex-and-silverlight%2F&amp;title=Ajax%2C+Flex+or+Silverlight%3F" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F30%2Fcomet-ajax-flex-and-silverlight%2F&amp;title=Ajax%2C+Flex+or+Silverlight%3F" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F30%2Fcomet-ajax-flex-and-silverlight%2F&amp;title=Ajax%2C+Flex+or+Silverlight%3F" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F30%2Fcomet-ajax-flex-and-silverlight%2F&amp;title=Ajax%2C+Flex+or+Silverlight%3F', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F30%2Fcomet-ajax-flex-and-silverlight%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F30%2Fcomet-ajax-flex-and-silverlight%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F30%2Fcomet-ajax-flex-and-silverlight%2F&amp;title=Ajax%2C+Flex+or+Silverlight%3F" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F30%2Fcomet-ajax-flex-and-silverlight%2F&amp;title=Ajax%2C+Flex+or+Silverlight%3F" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://cometdaily.com/2009/03/30/comet-ajax-flex-and-silverlight/feed/</wfw:commentRss>
		</item>
		<item>
		<title>cometD Acknowledged Message Extension</title>
		<link>http://cometdaily.com/2009/03/27/cometd-acknowledged-message-extension/</link>
		<comments>http://cometdaily.com/2009/03/27/cometd-acknowledged-message-extension/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 07:01:01 +0000</pubDate>
		<dc:creator>GregWilkins</dc:creator>
		
		<category><![CDATA[articles]]></category>

		<category><![CDATA[ack]]></category>

		<category><![CDATA[cometd]]></category>

		<category><![CDATA[cometd-jetty]]></category>

		<category><![CDATA[dojo]]></category>

		<category><![CDATA[jetty]]></category>

		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://cometdaily.com/?p=453</guid>
		<description><![CDATA[cometd-jetty now has an acknowledged message mechanism for reliable message delivery.]]></description>
			<content:encoded><![CDATA[<p>With the release of the latest <a href="http://cometd.org">cometd-jetty</a> in <a href="http://jetty.mortbay.org>Jetty 6.1.15</a>, the oft requested feature of <a href="http://docs.codehaus.org/display/JETTY/Acknowledged+Messages">acknowledged messages</a> is now provided in jetty server and in the dojo and jQuery cometD clients, providing more reliable message delivery and ordering.</p>
<p>The initial concept of cometD was to provide &#8220;web quality&#8221; communications between the server and the browser, i.e. it was not intended to provide reliable, transactional and/or atomic delivery of messages. The premise was that if your network failed, then messages can be lost. While this is sufficient for many applications, it is not sufficient for mission critical applications.  Luckily,  the Bayeux protocol implemented by cometD provides for an extension mechanism, which cometd-jetty, cometd-dojox and cometd-jquery have now used to provide an acknowledged message mechanism for reliable message delivery.</p>
<h2>Server-side</h2>
<p>To enable cometd-jetty support for acknowledged messages, the extension must be added to the bayeux instance during initialization:</p>

<div class="wp_syntax"><div class="code"><pre class="java">  bayeux.<span style="color: #006633;">addExtension</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> AcknowledgedMessagesExtension<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>The AcknowledgedMessageExtension is a per server extension that monitors handshakes from new clients, looking for clients that also support the acknowledged message extension and then adds the AcknowledgedMessagesClientExtension to each client on handshake.</p>
<p>Once added to a client, the AcknowledgedMessagesClientExtension prevents messages being delivered on any request other than a /meta/connect to prevent the possibility of out of order delivery. The extension also maintains a list of unacked messages and intercepts the /meta/connect traffic to insert and check ack IDs.</p>
<h2>DojoX Client</h2>
<p>The client-side for Dojo is provided by dojox/cometd/ack.js which was released in Dojo 1.3.0b2 (but can also be applied by patch to Dojo 1.2.x). To enable the client-side, the dojo.require mechanism is used:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript">  dojo.<span style="color: #006600;">require</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;dojox.cometd.ack&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>This is sufficient to enable the extension, however it may then be programmatically disabled/enabled before initialization by setting the ackEnabled boolean field:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript">  dojox.<span style="color: #006600;">cometd</span>.<span style="color: #006600;">ackEnabled</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>dojo.<span style="color: #006600;">query</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#ackInit&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006600;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;checked&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">&quot;true&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  dojox.<span style="color: #006600;">cometd</span>.<span style="color: #006600;">init</span><span style="color: #009900;">&#40;</span>cometdUrl<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h2>jQuery Client</h2>
<p>The client-side for jQuery is enabled by including the jquery.cometd-ack.js file (bundled with jetty 6.1.15):</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict">  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;../../jquery/jquery.cometd.js&quot;</span>&amp;gt;&amp;lt;<span style="color: #66cc66;">/</span>script&gt;</span></pre></div></div>

<h2>Details</h2>
<p>To enable message acknowledgement, both the client and server must indicate that they support message acknowledgement. This is negotiated during the handshake. On handshake, the client sends <code>"ext":{"ack": "true"}</code> to indicate that it supports message acknowledgement. If the server also supports message acknowledgment, it likewise replies with <code>"ext":{"ack": "true"}</code>.</p>
<p>The extension does not insert ack IDs to every message, as this would impose a significant burden on the server for messages sent to multiple clients (which would need to be reserialized to JSON for each client). Instead the ack ID is inserted in the ext field of the /meta/connect messages that are associated with message delivery. Each /meta/connect request contains the ack ID of the last received ack response: <code>"ext":{"ack": 42}</code>. Similarly, each ack response contains an ext ack ID that uniquely identifies the batch of responses sent.</p>
<p>If a /meta/connect message is received with an ack ID lower that any unacknowledged messages held by the extension, then these messages are requeued prior to any more recently queued messages and the /meta/connect response sent with a new ack ID.</p>
<h2>Demo</h2>
<p>There is an example of acknowledged messages in the DojoX chat demo that comes bundled with cometd-jetty.</p>
<p>To run the demo, download the Jetty implementation of cometD, then:</p>
<pre>
  cd contrib/cometd/demo
  mvn jetty:run
</pre>
<p>Point your browser to http://localhost:8080/examples/chat/ and make sure to check &#8220;Enable reliable messaging?&#8221;.</p>
<p>Use two different browser instances to initialize a chat session, then briefly disconnect one browser from the network (the work offline option will do this). While one browser is disconnected, type a chat message in the other browser and this will be received when the disconnected browser is reconnected to the network.</p>
<p>Note that if the disconnected browser is disconnected for an excess of maxInterval (the default is 10s), then the client will be timed out and the unacknowledged queue is discarded.</p>


<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F27%2Fcometd-acknowledged-message-extension%2F&amp;title=cometD+Acknowledged+Message+Extension" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F27%2Fcometd-acknowledged-message-extension%2F&amp;title=cometD+Acknowledged+Message+Extension" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F27%2Fcometd-acknowledged-message-extension%2F&amp;title=cometD+Acknowledged+Message+Extension" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F27%2Fcometd-acknowledged-message-extension%2F&amp;title=cometD+Acknowledged+Message+Extension" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F27%2Fcometd-acknowledged-message-extension%2F&amp;title=cometD+Acknowledged+Message+Extension', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F27%2Fcometd-acknowledged-message-extension%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F27%2Fcometd-acknowledged-message-extension%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F27%2Fcometd-acknowledged-message-extension%2F&amp;title=cometD+Acknowledged+Message+Extension" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F27%2Fcometd-acknowledged-message-extension%2F&amp;title=cometD+Acknowledged+Message+Extension" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://cometdaily.com/2009/03/27/cometd-acknowledged-message-extension/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Session Initiation Protocol</title>
		<link>http://cometdaily.com/2009/03/26/session-initiation-protocol/</link>
		<comments>http://cometdaily.com/2009/03/26/session-initiation-protocol/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 07:02:55 +0000</pubDate>
		<dc:creator>Kris Zyp</dc:creator>
		
		<category><![CDATA[Musings]]></category>

		<category><![CDATA[rest channels]]></category>

		<category><![CDATA[restchannels]]></category>

		<category><![CDATA[sip]]></category>

		<guid isPermaLink="false">http://cometdaily.com/?p=452</guid>
		<description><![CDATA[Comet developers can gain architectural inspiration from SIP]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://tools.ietf.org/html/rfc3261">Session Initiation Protocol (SIP)</a> is another duplex communication protocol that is worth advising in Comet architectural design. SIP provides a mechanism for establishing a bi-directional communication channel with negotiation of acceptable media type and semantics for message routing and is used for voice over IP (VOIP). Of course browsers don&#8217;t directly support SIP, so it is not possible to implement true SIP messaging as a Comet technique, but many of concepts and semantics from this protocol are certainly reusable. SIP is an IETF standardized protocol and shares numerous interoperable techniques and syntax with other foundational IETF protocols for the Internet like HTTP.</p>
<p>SIP messages follow the MIME/HTTP style syntax, and SIP has also been extended to <a href="http://www.ietf.org/rfc/rfc3265.txt">provide a powerful integration with HTTP for monitoring and subscribing to resource changes</a> (along with an <a href="http://www.ietf.org/rfc/rfc4662.txt">extension for efficient subscription to multiple resources</a> at once). This technique bears a strong correspondence with the <a href="http://cometdaily.com/2008/09/02/rest-channels-http-channels-with-json-support/">REST Channels</a> mechanism, providing a means with integrating with a REST architecture using the semantics from HTTP (REST Channels is specifically designed for Comet though), allowing a client to subscribe to resources and be notified of changes.</p>
<p>Since SIP is transport agnostic, it would also be possible to layer on top of Comet transport layer like <a href="http://js.io/">js.io</a> or <a href="http://dev.w3.org/html5/spec/Overview.html#network">WebSockets</a>.</p>


<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F26%2Fsession-initiation-protocol%2F&amp;title=Session+Initiation+Protocol" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F26%2Fsession-initiation-protocol%2F&amp;title=Session+Initiation+Protocol" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F26%2Fsession-initiation-protocol%2F&amp;title=Session+Initiation+Protocol" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F26%2Fsession-initiation-protocol%2F&amp;title=Session+Initiation+Protocol" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F26%2Fsession-initiation-protocol%2F&amp;title=Session+Initiation+Protocol', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F26%2Fsession-initiation-protocol%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F26%2Fsession-initiation-protocol%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F26%2Fsession-initiation-protocol%2F&amp;title=Session+Initiation+Protocol" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F26%2Fsession-initiation-protocol%2F&amp;title=Session+Initiation+Protocol" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://cometdaily.com/2009/03/26/session-initiation-protocol/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ItsNat v0.6 released. Comet (long-polling) Now Event-Based</title>
		<link>http://cometdaily.com/2009/03/25/itsnat-v06-released-comet-long-polling-now-event-based/</link>
		<comments>http://cometdaily.com/2009/03/25/itsnat-v06-released-comet-long-polling-now-event-based/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 07:01:51 +0000</pubDate>
		<dc:creator>Jose Maria Arranz</dc:creator>
		
		<category><![CDATA[Musings]]></category>

		<category><![CDATA[Comet]]></category>

		<category><![CDATA[DOM]]></category>

		<category><![CDATA[ItsNat]]></category>

		<category><![CDATA[long polling]]></category>

		<category><![CDATA[W3C]]></category>

		<guid isPermaLink="false">http://cometdaily.com/?p=454</guid>
		<description><![CDATA[ItsNat has released an updated version that now uses event-based long-polling for notifications]]></description>
			<content:encoded><![CDATA[<p><a href="http://cometdaily.com/2008/10/07/server-centric-comet-with-itsnat/">ItsNat</a> version 0.6 has been released, and adds a new event system for Comet using long-polling. When the client is going to be notified that something occurred in the server (the method <code>CometNotifier.notifyClient()</code> has been called), a special Comet DOM event (an extension of W3C DOM) is fired and dispatched to the optional event listener registered on the <code>CometNotifier</code>. </p>
<p>The thread executing the event listener is a web-request thread and in this context the document (<code>ItsNatDocument</code>) is locked by this thread, so there is no need for synchronization. This is an opportunity to change the server DOM, to send custom JavaScript, etc. Prior to this release, the background thread usually updated the client (synchronizing the document first).  Now, the event listener approach is preferred, but the old approach is still valid.</p>
<p>The following example shows how a background thread notifies the client every 2 seconds. There are two notifications (two alerts), the first one pushed by the background thread and second alert is pushed by the event listener. Of course the method <code>CometNotifier.notifyClient()</code> needs to be called by the background thread, otherwise the first alert is queued but not sent and the Comet event is not fired and dispatched.</p>

<div class="wp_syntax"><div class="code"><pre class="java">    <span style="color: #000000; font-weight: bold;">final</span> ItsNatDocument itsNatDoc <span style="color: #339933;">=</span> ...<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">final</span> CometNotifier notifier <span style="color: #339933;">=</span>
        itsNatDoc.<span style="color: #006633;">getClientDocumentOwner</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">createCometNotifier</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003399;">EventListener</span> listener <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">EventListener</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> handleEvent<span style="color: #009900;">&#40;</span><span style="color: #003399;">Event</span> evt<span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
           itsNatDoc.<span style="color: #006633;">addCodeToSend</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;alert('Tick From Event');&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
    notifier.<span style="color: #006633;">addEventListener</span><span style="color: #009900;">&#40;</span>listener<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003399;">Thread</span> backgroundThr <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Thread</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> run<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Background server task started&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000066; font-weight: bold;">long</span> t1 <span style="color: #339933;">=</span> <span style="color: #003399;">System</span>.<span style="color: #006633;">currentTimeMillis</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000066; font-weight: bold;">long</span> t2 <span style="color: #339933;">=</span> t1<span style="color: #339933;">;</span>
            <span style="color: #000000; font-weight: bold;">do</span>
            <span style="color: #009900;">&#123;</span>
                <span style="color: #000000; font-weight: bold;">try</span>
                <span style="color: #009900;">&#123;</span>
                    <span style="color: #003399;">Thread</span>.<span style="color: #006633;">sleep</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
                <span style="color: #000000; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">InterruptedException</span> ex<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
                <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>notifier.<span style="color: #006633;">isStopped</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
                <span style="color: #009900;">&#123;</span>
                    <span style="color: #000000; font-weight: bold;">synchronized</span><span style="color: #009900;">&#40;</span>itsNatDoc<span style="color: #009900;">&#41;</span>
                    <span style="color: #009900;">&#123;</span>
                       itsNatDoc.<span style="color: #006633;">addCodeToSend</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;alert('Tick From Thread');&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <span style="color: #009900;">&#125;</span>
                    notifier.<span style="color: #006633;">notifyClient</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
                t2 <span style="color: #339933;">=</span> <span style="color: #003399;">System</span>.<span style="color: #006633;">currentTimeMillis</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
            <span style="color: #000000; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span>t2 <span style="color: #339933;">-</span> t1<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">10</span><span style="color: #339933;">*</span><span style="color: #cc66cc;">60</span><span style="color: #339933;">*</span><span style="color: #cc66cc;">1000</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Max 10 minutes</span>
&nbsp;
            notifier.<span style="color: #006633;">stop</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Background server task finished&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
    backgroundThr.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Another interesting feature introduced in ItsNat v0.6 is a draft of the full remote control capability. In full remote control, two or more users can &#8220;share&#8221; the same web page, that is, if a user does something and the page changes, the page of other users are updated accordingly. Polling and long-polling can be easily used to update the page the users attached to the original page (if the original page need to be updated automatically an Ajax timer or CometNotifier can also be used). In previous versions, only read-only monitoring was possible (&#8221;remote views&#8221;).</p>
<p>The full remote control capability is disabled by default, and must be enabled by using an internal flag, if you need this feature now contact with me to learn how to enable it.</p>


<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F25%2Fitsnat-v06-released-comet-long-polling-now-event-based%2F&amp;title=ItsNat+v0.6+released.+Comet+%28long-polling%29+Now+Event-Based" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F25%2Fitsnat-v06-released-comet-long-polling-now-event-based%2F&amp;title=ItsNat+v0.6+released.+Comet+%28long-polling%29+Now+Event-Based" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F25%2Fitsnat-v06-released-comet-long-polling-now-event-based%2F&amp;title=ItsNat+v0.6+released.+Comet+%28long-polling%29+Now+Event-Based" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F25%2Fitsnat-v06-released-comet-long-polling-now-event-based%2F&amp;title=ItsNat+v0.6+released.+Comet+%28long-polling%29+Now+Event-Based" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F25%2Fitsnat-v06-released-comet-long-polling-now-event-based%2F&amp;title=ItsNat+v0.6+released.+Comet+%28long-polling%29+Now+Event-Based', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F25%2Fitsnat-v06-released-comet-long-polling-now-event-based%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F25%2Fitsnat-v06-released-comet-long-polling-now-event-based%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F25%2Fitsnat-v06-released-comet-long-polling-now-event-based%2F&amp;title=ItsNat+v0.6+released.+Comet+%28long-polling%29+Now+Event-Based" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fcometdaily.com%2F2009%2F03%2F25%2Fitsnat-v06-released-comet-long-polling-now-event-based%2F&amp;title=ItsNat+v0.6+released.+Comet+%28long-polling%29+Now+Event-Based" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://cometdaily.com/2009/03/25/itsnat-v06-released-comet-long-polling-now-event-based/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
