<?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>Shaun Abram &#187; comet</title>
	<atom:link href="http://www.shaunabram.com/tag/comet/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.shaunabram.com</link>
	<description>Java and Technology weblog</description>
	<lastBuildDate>Thu, 09 Feb 2012 18:06:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>OSCON Day4: WebSockets</title>
		<link>http://www.shaunabram.com/oscon-day4-websockets/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=oscon-day4-websockets</link>
		<comments>http://www.shaunabram.com/oscon-day4-websockets/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 01:03:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[comet]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[oscon]]></category>
		<category><![CDATA[websockets]]></category>

		<guid isPermaLink="false">http://www.shaunabram.com/?p=882</guid>
		<description><![CDATA[The first talk of the day I attended at Day 4 of OSCON was from Sean Sullivan (Aravo), who gave a talk on &#8220;Programming WebSockets&#8220;. Intro WebSockets is a technology that enables bidirectional communication between web browsers and server side processes. It provides a persistent connection between client &#038; Server, hence enabling &#8216;push&#8217; abilities where [...]]]></description>
			<content:encoded><![CDATA[<p>The first talk of the day I attended at Day 4 of <a href="http://www.oscon.com/oscon2010">OSCON</a> was from Sean Sullivan (<a href="http://www.aravo.com/">Aravo</a>), who  gave a talk on &#8220;<a href="http://www.oscon.com/oscon2010/public/schedule/detail/13805">Programming WebSockets</a>&#8220;.</p>
<h3>Intro</h3>
<p><a href="http://en.wikipedia.org/wiki/WebSockets">WebSockets</a> is a technology that enables bidirectional communication between web browsers and server side processes. It provides a persistent connection between client &#038; Server, hence enabling &#8216;push&#8217; abilities where you can push data/notification to browsers from the client. Other client communication options to compare it with would be <a href="http://en.wikipedia.org/wiki/Ajax_%28programming%29">Ajax</a><br />
and <a href="http://en.wikipedia.org/wiki/Comet_%28programming%29">Comet</a> (basically Ajax with long polling).</p>
<p><span id="more-882"></span> </p>
<h3>Specifications</h3>
<ul>
<li><a href="http://dev.w3.org/html5/websockets/">WebSockets API</a> &#8211; This focuses on the client side programming model.</li>
<li><a href="http://www.whatwg.org/specs/web-socket-protocol/">WebSockets protocol</a> &#8211; Describes the client/server communication in more detail. More complicated and 51 pages long. The WebSockets protocol is still actively being changed.</li>
</ul>
<h3>Browser Support</h3>
<ul>
<li>Google Chrome 4.0.249.0 and higher (v5 has WebSockets enabled by default)</li>
<li>Safari 5.0</li>
<li>FireFox 4.0 beta 1</li>
<li>
IE 9: TBD</li>
</ul>
<p>There was a suggestion that Apple have decided to disable WebSockets in iOS4 but this is unconfirmed and the speaker suspects Apple will support WebSockets in the future.</p>
<h3>Server side support</h3>
<ul>
<li>Apache Server &#8211; not supported yet</li>
<li><a href="http://code.google.com/p/pywebsocket/">Py WebSocket</a> &#8211; designed for use with Apache Server (actually implemented by Google Chromium team.)</li>
<li>There is also a DJango solution: <a href="http://pypi.python.org/pypi/django-websocket/">django-websocket</a></li>
<li><a href="http://blogs.webtide.com/gregw/entry/jetty_websocket_server">Jetty WebSocket Server</a> &#8211; Jetty has supported WebSockets since last September. This seems to be a good option.</li>
</ul>
<p>However, note that there is no standard service side Java API. Each Java container has it&#8217;s own API. Therefore it will likely be difficult to write WebSockets for one app server and do a straight port to another app server.</p>
<h3>Projects</h3>
<p>Other Java Projects supporting WebSockets:</p>
<ul>
<li>GlassFish/Grizzly (see a DZone posting on it <a href="http://www.dzone.com/links/glassfish_web_sockets_sample.html?ref=rs">here</a>)</li>
<li><a href="http://jwebsocket.org/">jWebSocket</a></li>
<li><a href="http://jboss.org/netty">JBoss Netty</a> (see patch <a href="https://jira.jboss.org/browse/NETTY-264">here</a>)</li>
<li><a href="http://www.caucho.com/resin/examples/websocket-java/index.xtp">Caucho Resin</a></li>
</ul>
<p>Sean finished by showing the <a href="http://code.google.com/p/quake2-gwt-port/">Google Quake demo</a> (also reported <a href="http://www.bit-tech.net/news/2010/04/05/google-ports-quake-2-to-html5/1">here</a>).</p>
<p>The conclusion of the talk was on how to gracefully handle browsers that don&#8217;t support WebSockets (e.g. IE8). The main option here seems to be &#8220;<a href="http://code.google.com/p/jquery-graceful-websocket/">The Graceful WebSocket</a>&#8220;. This resorts back to using AJAX long pulling if WebSockets isn&#8217;t supported in the browser.</p>
<h3>My Thoughts</h3>
<p>WebSockets looks like one of the most interesting technologies that fall under the HTML5 umbrella. If it gets wide browser support (e.g. IE9), and perhaps some standardization on the server side, it could really take off and even potentially over take Ajax. Definitely one to watch&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shaunabram.com/oscon-day4-websockets/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

