<?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>Orbited Blog</title>
	<atom:link href="http://orbited.org/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://orbited.org/blog</link>
	<description>Blogging Comet Applications</description>
	<pubDate>Mon, 26 Jul 2010 11:03:28 +0000</pubDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
			<item>
		<title>Introducing Hookbox</title>
		<link>http://orbited.org/blog/2010/07/introducing-hookbox/</link>
		<comments>http://orbited.org/blog/2010/07/introducing-hookbox/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 11:03:28 +0000</pubDate>
		<dc:creator>Michael Carter</dc:creator>
		
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://orbited.org/blog/?p=272</guid>
		<description><![CDATA[As some of you may know, I&#8217;ve been working on an alternate comet/websocket/web-push server called Hookbox for the past year. The goal of the project is to expose much higher-level APIs than Orbited, and provide tight integration with existing web technologies, like Django, Pylons, PHP, Rails, Java Servlets, etc. Hookbox makes the most of WebSocket-enabled [...]]]></description>
			<content:encoded><![CDATA[<p>As some of you may know, I&#8217;ve been working on an alternate comet/websocket/web-push server called <a href="http://hookbox.org">Hookbox</a> for the past year. The goal of the project is to expose much higher-level APIs than <a href="http://www.orbited.org">Orbited</a>, and provide tight integration with existing web technologies, like Django, Pylons, PHP, Rails, Java Servlets, etc. Hookbox makes the most of <a href="http://dev.w3.org/html5/websockets/">WebSocket</a>-enabled browers, and falls back on <a href="http://orbited.org/csp/">Comet Session Protocol</a> for older browsers and reverse proxies.</p>

<p>Please take a look at <a href=" http://cometdaily.com/2010/07/26/a-fast-introduction-to-hookbox/">
A Fast Introduction to Hookbox</a>, an article/tutorial that I just published on <a href="http://www.cometdaily.com">Comet Daily</a>. I hope that you&#8217;ll find the technology to be <em>much</em> more approachable than anything else out there.</p>

<p>Feedback is very welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://orbited.org/blog/2010/07/introducing-hookbox/feed/</wfw:commentRss>
		</item>
		<item>
		<title>In hot pursuit of Ultimate Quality</title>
		<link>http://orbited.org/blog/2010/04/in-hot-pursuit-of-ultimate-quality/</link>
		<comments>http://orbited.org/blog/2010/04/in-hot-pursuit-of-ultimate-quality/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 22:43:14 +0000</pubDate>
		<dc:creator>desmaj</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://orbited.org/blog/?p=260</guid>
		<description><![CDATA[My last post was a short walk through the history of the orbited project. We examined orbited&#8217;s evolution over the past three years to help us better understand its current state. A better understanding of what orbited is now should lead to a better plan for the future. I&#8217;ll post about this plan very soon, [...]]]></description>
			<content:encoded><![CDATA[<p>My last post was a short walk through the history of the orbited project. We examined orbited&#8217;s evolution over the past three years to help us better understand its current state. A better understanding of what orbited is now should lead to a better plan for the future. I&#8217;ll post about this plan very soon, but first I&#8217;d like to talk about how we&#8217;ll get there.</p>

<p>Well, how about just a little more navel-gazing. It will pay off, I promise.</p>

<p>Have a look at the <a href="http://orbited.org/wiki/About">&#8220;About Orbited</a>&#8221; page in the orbited.org wiki. There are eleven committers listed on the page and another seven contributors. Not represented there are the scores of people who have written blog posts describing how they&#8217;ve used orbited or laying out some steps for getting started. It would be extraordinarily difficult to count the number of visits that #orbited has received through the <a href="http://orbited.org/wiki/LiveHelp">livehelp</a> portal. Assuming that one of twenty livehelp contacts generated a constructive criticism or honest opinion and that everyone else I&#8217;ve mentioned made non-trivial contributions to the project, I think it&#8217;s fair to say that orbited&#8217;s evolution has been influenced by hundreds.</p>

<p>This makes orbited, in my opinion, a great illustration of the value in open development. orbited started as a solution to one person&#8217;s problem and so it changed a lot as that one person faced different challenges and had new ideas. orbited adoption grew in time and we were fortunate that new users would often take the time to discuss the problems they were having or the ways that they thought orbited could be improved. All of these influences have had a stabilizing effect on the project and work has shifted from figuring out what orbited should be to making it a better instance of that thing.</p>

<p>Early development was chaotic and the chaos suited the work. Now that we&#8217;ve entered a phase of refinement we need to determine the way to best match our organization to the work we&#8217;re doing. I would like to follow the example of the project that provided the foundation upon which orbited is built. This is the <a href="http://twistedmatrix.com/trac/">Twisted Project</a>.</p>

<p>The <a href="http://twistedmatrix.com/trac/wiki/TwistedMatrixLaboratories">people of Twisted Matrix Labs</a> know how to do open development. Twisted is an impressive project, not only because of the subprojects it has produced, but also because of the way the developers work to produce them. I&#8217;ll leave it to you to read more about their <a href="http://twistedmatrix.com/trac/wiki/TwistedDevelopment">development process</a> or browse the project&#8217;s <a href="http://twistedmatrix.com/trac/wiki/Documentation">extensive documentation</a>. For now, let&#8217;s focus on three aspects of their process: ticket discipline, code review and continuous integration.</p>

<p>Continuous Integration is something that I&#8217;ve heard about for a while, and had a hunch was for real, but hadn&#8217;t experienced until recently. It&#8217;s as simple as, well, ABB. &#8220;A&#8221; Always, &#8220;B&#8221; Be, &#8220;B&#8221; Building. Automate your &#8220;build&#8221; process and do it. A lot. Either on a preset schedule, or anytime there is a change to one of the pieces of your project that you control. Build goes in quotes, by the way, since here it represents whatever it is that you do to turn your raw materials (source) into something that people can use. The benefit for you is that when something goes wrong, you&#8217;ll know about it immediately. Everyone will, in fact, since you will make the results of your builds public. When you&#8217;re proud of what you&#8217;ve made, this is strong motivation for keeping it working.</p>

<p>The <a href="http://divmod.org/">DivMod</a> Ultimate Quality Development Process outlines a way of using a ticketing system in combination with code review to maintain a project&#8217;s level of quality. There&#8217;s a rule: every change to the source must be traceable to a ticket. That ticket must contain certain pieces of information and it will be used as the basis for a code review. So the change needs to match the request in the ticket.</p>

<p>There are two benefits (that I&#8217;m interested in) to using tickets and carrying out code reviews. Code reviews put more eyes (and brains) on the code, so more people involved with the project know how it works and, more importantly, why it works. Recording change requests and code review comments in tickets has a similar benefit; tickets become an established source of information about the system. Where code reviews have the effect of familiarizing project members with the state of the project, the ticket system makes the development process more readily available to those not part of the project.</p>

<p>Project transparency is something that orbited has lacked in the past, and something we need to do better. The orbited code base is small but dense and less than packed with comments. The bar has always been high for new contributors, but we can do something about that. Let&#8217;s work out a sustainable development system built on tickets, testing and code review. Let&#8217;s make it our goal to keep the state of the project available at all times and be ready to point people toward it.</p>
]]></content:encoded>
			<wfw:commentRss>http://orbited.org/blog/2010/04/in-hot-pursuit-of-ultimate-quality/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Orbited - this is your life!</title>
		<link>http://orbited.org/blog/2010/04/orbited-this-is-your-life/</link>
		<comments>http://orbited.org/blog/2010/04/orbited-this-is-your-life/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 15:02:40 +0000</pubDate>
		<dc:creator>desmaj</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://orbited.org/blog/?p=253</guid>
		<description><![CDATA[The first post to the current incarnation of the orbited blog is dated just over three years ago. It almost certainly lived in Michael Carter&#8217;s imagination for a while before that, but let&#8217;s say that orbited was born on the Ides of March in 2007. In the three busy years that have passed, orbited has [...]]]></description>
			<content:encoded><![CDATA[<p>The first post to the current incarnation of the orbited blog is dated just over three years ago. It almost certainly lived in Michael Carter&#8217;s imagination for a while before that, but let&#8217;s say that orbited was born on the Ides of March in 2007. In the three busy years that have passed, orbited has taken several shapes. Since we&#8217;re getting ready to plan for the next stage of orbited&#8217;s career, it will be instructive to look back at what orbited has been before we decide what it should become.</p>

<p>Michael Carter started designing and prototyping orbited in August of 2006. At the time, orbited was to be a comet server that did not provide an publish/subscribe functionality. When I arrived in the Summer of 2007, this was the orbited I met. orbited allowed you to push messages between a browser and a client written in the language of your choice. Each connection was assigned an identifier and the clients could only send a message to one connection at a time. Associating groups of connections to create &#8216;channels&#8217; was intentionally left to the server.</p>

<p>orbited 0.1 though 0.3 also shipped with an http proxy. Intended for development, the proxy worked around same-domain restrictions by making it look, to the browser, as though the orbited daemon and a web application are on the same domain. The proxy was dropped since it was a maintenance headache and the choice was make to simply support cross-port and cross-domain deployments.</p>

<p>orbited 0.5 was the first release implementing the concepts we find in the current orbited. orbited has become a TCP socket proxy. Language-specific server-side client support was dropped in favor of the socket support that already exists in most language&#8217;s environments. The key insight here is that orbited should do one thing and do it well. The thing orbited does well is provide a tcp socket to browser javascript.</p>

<p>orbited 0.6 introduced the &#8220;quickstart&#8221; setting that runs morbidq alongside the orbited daemon. A common concern expressed by those new to #orbited is that they would need to run two separate programs to get the publish/subscribe behaviour they wanted. The quickstart made orbited and morbidq appear as one.</p>

<p>orbited 0.7 saw tighter integration with the morbidq STOMP broker and the inclusion of some new protocols (via the js.io project) as demonstrations and examples. The nature of orbited remained the same, but the distribution gained several &#8220;extras&#8221; intended to make it easier for new users to get started.</p>

<p>This is where we are today. orbited 0.7.10 line is the latest stable orbited release. The orbited 0.8 branch is focused on factoring out the core comet server that orbited uses and making it available to servers in other problem domains. Development of the orbited 0.8 branch has been slow and not always steady since extracting the comet server from the orbited daemon also meant extracting the corresponding javascript code from the bundled Orbited.js javascript file. This work is complete, and the js.io project now holds several standard protocol implementations that can be used in conjunction with orbited&#8217;s socket proxy to allow the browser to communicate with existing systems.</p>

<p>So while orbited has taken a number of forms since it was first released, it has stabilized as a tcp socket proxy. It is important to note that while orbited ships a number of protocol implementations as demonstrations, they are only examples. orbited does now, and will continue to, provide the expected tcp socket interface to browser javascript.</p>
]]></content:encoded>
			<wfw:commentRss>http://orbited.org/blog/2010/04/orbited-this-is-your-life/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Willow Chat Presentation at CodeCamp</title>
		<link>http://orbited.org/blog/2008/11/willow-chat-presentation-at-codecamp/</link>
		<comments>http://orbited.org/blog/2008/11/willow-chat-presentation-at-codecamp/#comments</comments>
		<pubDate>Sat, 01 Nov 2008 10:48:07 +0000</pubDate>
		<dc:creator>Adrian Weisberg</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://orbited.org/blog/?p=238</guid>
		<description><![CDATA[The Silicon Valley CodeCamp is next weekend (Nov 8 &#38; 9). On Saturday Michael Carter is presenting on &#8220;WillowChat: Out-of-the-Box Comet Webchat,&#8221;, which is powered by Orbited and js.io.
]]></description>
			<content:encoded><![CDATA[<p>The Silicon Valley CodeCamp is next weekend (Nov 8 &amp; 9). On Saturday Michael Carter <a href="http://www.siliconvalley-codecamp.com/Sessions.aspx?OnlyOne=true&#038;id=123">is presenting on &#8220;WillowChat: Out-of-the-Box Comet Webchat,&#8221;</a>, which is powered by Orbited and <a href="http://js.io">js.io</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://orbited.org/blog/2008/11/willow-chat-presentation-at-codecamp/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Orbited.TCPSocket support for js.io joined by Lightstreamer TCPSocket</title>
		<link>http://orbited.org/blog/2008/10/orbitedtcpsocket-support-for-jsio-joined-by-lightstreamer-tcpsocket/</link>
		<comments>http://orbited.org/blog/2008/10/orbitedtcpsocket-support-for-jsio-joined-by-lightstreamer-tcpsocket/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 00:53:53 +0000</pubDate>
		<dc:creator>Michael Carter</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://orbited.org/blog/?p=236</guid>
		<description><![CDATA[The Orbited Project always strives to push the boundaries of bi-directional web technology, and then roll our advances back into standards. The Orbited.TCPSocket is a prime example &#8212; initially it was our internal standard, the separation between protocol and transport. The js.io project is targeted against the TCPSocket API instead of being built directly into [...]]]></description>
			<content:encoded><![CDATA[<p>The Orbited Project always strives to push the boundaries of bi-directional web technology, and then roll our advances back into standards. The Orbited.TCPSocket is a prime example &#8212; initially it was our internal standard, the separation between protocol and transport. The js.io project is targeted against the TCPSocket API instead of being built directly into Orbited because we always hoped to provide the widest range of integration. For this reason, I&#8217;m excited to announce that <a href=" http://js.io/trac/wiki/News">Lightstreamer will be joining Orbited and Sproket.Socket in supporting the js.io.TCPSocket API</a>. This means that you will be able to swap Orbited out for Lightstreamer in any applications that depend on js.io, including applications developed against the js.io.WebSocket implementation for future-proof compliance with the HTML5 standard.</p>
]]></content:encoded>
			<wfw:commentRss>http://orbited.org/blog/2008/10/orbitedtcpsocket-support-for-jsio-joined-by-lightstreamer-tcpsocket/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Our Ancestor&#8217;s Secrets: WebSocket Article and Panel</title>
		<link>http://orbited.org/blog/2008/10/our-ancestors-secrets-websocket-article-and-panel/</link>
		<comments>http://orbited.org/blog/2008/10/our-ancestors-secrets-websocket-article-and-panel/#comments</comments>
		<pubDate>Sat, 25 Oct 2008 09:16:15 +0000</pubDate>
		<dc:creator>Adrian Weisberg</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://orbited.org/blog/?p=225</guid>
		<description><![CDATA[Michael just wrote an article on WebSocket for the Silicon Valley Web Builder blog. He talks about his experiences explaining WebSocket to developers, and how we can &#8220;recover our ancestor’s secrets&#8221; of good architecture.

Michael is on the WebSocket, Comet, HTML 5, and web standards panel that SV Web Builder has organized for October 29th. The [...]]]></description>
			<content:encoded><![CDATA[<p>Michael just wrote <a href="http://svwebbuilder.wordpress.com/2008/10/20/html5-websocket-and-webjneering/">an article on WebSocket</a> for the Silicon Valley Web Builder blog. He talks about his experiences explaining <a href="http://cometdaily.com/2008/07/04/html5-websocket/">WebSocket</a> to developers, and how we can &#8220;recover our ancestor’s secrets&#8221; of good architecture.</p>

<p>Michael is on the <a href="http://webstandard.eventbrite.com/">WebSocket, Comet, HTML 5, and web standards panel</a> that SV Web Builder has organized for October 29th. The panel also includes Alex Russell, Dion Almaer, Ted Goddard, John Fallows, and Kevin Nilson. It&#8217;s all going down at the Google headquarters in Mountain View. The event is free if you register online.</p>
]]></content:encoded>
			<wfw:commentRss>http://orbited.org/blog/2008/10/our-ancestors-secrets-websocket-article-and-panel/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Announcing Orbited 0.7.0</title>
		<link>http://orbited.org/blog/2008/10/announcing-orbited-070/</link>
		<comments>http://orbited.org/blog/2008/10/announcing-orbited-070/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 13:50:01 +0000</pubDate>
		<dc:creator>Michael Carter</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://orbited.org/blog/?p=222</guid>
		<description><![CDATA[Today marked the release of Orbited 0.7.0, along with the first 0.7.0 tutorial over at CometDaily. Thanks to everyone who helped with the release.

A couple of new features include:


 Embedded Stomp broker via MorbidQ. Now you put stomp:// urls in the [listen] section of the configuration
 Reworked startup api for easier use with outside projects [...]]]></description>
			<content:encoded><![CDATA[<p>Today marked the release of Orbited 0.7.0, along with the <a href="http://cometdaily.com/2008/10/10/scalable-real-time-web-architecture-part-2-a-live-graph-with-orbited-morbidq-and-jsio/">first 0.7.0 tutorial</a> over at CometDaily. Thanks to everyone who helped with the release.</p>

<p>A couple of new features include:</p>

<ul>
 <li>Embedded Stomp broker via <a href="http://www.morbidq.com">MorbidQ</a>. Now you put stomp:// urls in the [listen] section of the configuration</li>
 <li>Reworked startup api for easier use with outside projects like <a href="http://www.willowchat.org">WillowChat</a>.</li>
 <li>Improvements to the IRC client (via <a href="http://www.js.io">js.io</a>)</li>
 <li>Increased stability for Connection handling when the page is reloaded navigated away from then returned to</li>
 <li>Various small bug fixes</li>
  <li>See the commit logs and <a href="http://www.orbited.org/timeline">timeline</a>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://orbited.org/blog/2008/10/announcing-orbited-070/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Django + Orbited 0.6.x Tutorial</title>
		<link>http://orbited.org/blog/2008/09/django-orbited-06x-tutorial/</link>
		<comments>http://orbited.org/blog/2008/09/django-orbited-06x-tutorial/#comments</comments>
		<pubDate>Fri, 26 Sep 2008 16:13:12 +0000</pubDate>
		<dc:creator>Adrian Weisberg</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://orbited.org/blog/?p=207</guid>
		<description><![CDATA[Dark Porter posted a tutorial on using Orbited with Django. Michael Carter linked to it on Comet Daily, and said:

Obviously it makes sense to migrate to separate processes for a high-concurrency production deployment, but this method is perfect for developing applications and deploying small to medium instances.

The tutorial uses a different technique than the STOMP [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://darkporter.com/?page_id=2">Dark Porter</a> posted a <a href="http://darkporter.com/?p=7">tutorial on using Orbited with Django</a>. Michael Carter <a href="http://cometdaily.com/2008/09/22/new-django-orbited-06x-tutorial/">linked to it on Comet Daily</a>, and said:</p>

<blockquote>Obviously it makes sense to migrate to separate processes for a high-concurrency production deployment, but this method is perfect for developing applications and deploying small to medium instances.</blockquote>

<p>The tutorial uses a different technique than <a href="http://orbited.org/blog/2008/09/integrating-orbited-with-web-app-frameworks/">the STOMP method</a> I described. Dark Porter takes advantage of the fact that Django and Orbited are both written in Python, and puts everything in one process, including a custom threaded TCP server.</p>
]]></content:encoded>
			<wfw:commentRss>http://orbited.org/blog/2008/09/django-orbited-06x-tutorial/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Heartbeats Handle Dropped Connections and Timeouts</title>
		<link>http://orbited.org/blog/2008/09/heartbeats-handle-dropped-connections-and-timeouts/</link>
		<comments>http://orbited.org/blog/2008/09/heartbeats-handle-dropped-connections-and-timeouts/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 00:00:33 +0000</pubDate>
		<dc:creator>Adrian Weisberg</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://orbited.org/blog/?p=149</guid>
		<description><![CDATA[The 0.6.1 release of Orbited adds a feature called heartbeats that improves dropped connection handling and also decreases reconnects due to timeouts. Dropped connection handling is important because it affects the user experience of a web application. Heartbeats are better than the previous solution of reconnecting at a fixed interval because they do a better [...]]]></description>
			<content:encoded><![CDATA[<p>The 0.6.1 release of Orbited adds a feature called heartbeats that improves dropped connection handling and also decreases reconnects due to timeouts. Dropped connection handling is important because it affects the user experience of a web application. Heartbeats are better than the previous solution of reconnecting at a fixed interval because they do a better job at a lower network cost.</p>

<h2>Dropped Connections</h2>

<p>A web application can&#8217;t prevent most dropped connections. It can only handle them in the best manner possible. Dropped connections are a problem because unless there&#8217;s some notification mechanism, the browser won&#8217;t automatically try to reestablish the connection. Furthermore, the user will think that the application is operating in a connected state, and won&#8217;t realize that they are missing messages.</p>

<p><span id="more-149"></span></p>

<p>This hurts the functionality of the application, and also decreases the user&#8217;s confidence in the application, which has negative implications for how much they use it and whether they will use it for important tasks. Preventing disturbances in the user experience and increasing user trust are both very important goals. Orbited prevents lost messages by keeping a buffer of recently sent messages, but we still want to resume normal operations as possible.</p>

<h2>Fixed Interval Reconnects</h2>

<p>A common way to handle dropped connections is to have the browser reconnect every 30 seconds, regardless of whether the connection has dropped. Prior to 0.6.1 this is what Orbited did. This method caps the period of browser unawareness at 30 seconds + the browser timeout interval. ~30 seconds is a long time for the browser to be ignorant of the connection state. The interval can be decreased, but reconnects should be avoided for 2 reasons:</p>

<ul>
<li>The browser can&#8217;t receive messages while it&#8217;s reconnecting. The connection is usually fine, so most reconnects are actually making things worse for a short period of time. </li>
<li>Each reconnect requires a full HTTP message to be sent and processed. This isn&#8217;t that bad for the client, but really adds up for the server, which is almost always the bottleneck for web applications. And some people are on dial-up or mobile connections.</li>
</ul>

<p>Fixed interval reconnects aren&#8217;t horrible, and they&#8217;re used by live deployments. But there&#8217;s a much better way.</p>

<h2>The Heartbeat Solution</h2>

<p>Orbited 0.6.1 adds a feature called heartbeats, which provide better browser awareness at a lower overhead cost than fixed interval reconnects. A &#8220;heartbeat&#8221; is a tiny amount of data (~1 byte) sent from the server to the browser without separate HTTP headers (it&#8217;s sent in the context of the Comet connection HTTP headers), meaning the cost both of bandwidth and server processing is negligible.</p>

<p>If we send a heartbeat every 5 seconds, the maximum time the browser is unaware of the connection state drops from 30 seconds + the browser timeout interval (with fixed interval reconnects) to the heartbeat timeout, which defaults to 15 seconds (the timeout is longer than the interval to account for latency). And the browser only has to reconnect if the connection drops, instead of having to reconnect every 30 seconds no matter what. The timeout and the heartbeat interval can both be lowered if necessary.</p>

<h2>Timeouts</h2>

<p>Heartbeats also prevent browser and proxy timeouts. Browsers and proxies often close open connections after around 60 seconds of inactivity. The fixed interval reconnect avoids the connection being closed unceremoniously, but since heartbeats count as activity, they prevent the timeouts from even happening. The fewer reconnects the better.</p>

<h2>Usage with Transports</h2>

<p>Orbited provides two Comet transports: streaming and long polling. Streaming provides better performance and is the default/recommended option. Both transports work with heartbeats. IE and Opera can only read heartbeats when they&#8217;re used with a streaming connection, so a long polling connection can&#8217;t use them for dropped connection handling, but they&#8217;re still handy for avoiding timeouts. Streaming with heartbeats works with most firewalls, forward proxies, reverse proxies, and routers, but if a particular deployment of intermediaries does manage to thwart streaming, the server can fall back to long-polling.</p>

<h2>What You Need to Do</h2>

<p>Probably nothing! Orbited 0.6.1 and onward use streaming with heartbeats by default. If you want you can lower the heartbeat interval and timeout for even better browser awareness of dropped connections.</p>
]]></content:encoded>
			<wfw:commentRss>http://orbited.org/blog/2008/09/heartbeats-handle-dropped-connections-and-timeouts/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Orbited 0.6.1</title>
		<link>http://orbited.org/blog/2008/09/orbited-061/</link>
		<comments>http://orbited.org/blog/2008/09/orbited-061/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 11:23:23 +0000</pubDate>
		<dc:creator>Adrian Weisberg</dc:creator>
		
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://orbited.org/blog/?p=190</guid>
		<description><![CDATA[0.6.1 is a maintenance release that fixes a number of small problems. Everyone is encouraged to upgrade. 0.6.1 also adds a new feature that&#8217;s been under development for awhile called heartbeats, which improve dropped connection handling and reduce timeouts. I&#8217;ll be writing a post on that shortly.

If you&#8217;re using a version of Orbited lower than [...]]]></description>
			<content:encoded><![CDATA[<p>0.6.1 is a maintenance release that fixes a number of small problems. Everyone is encouraged to upgrade. 0.6.1 also adds a new feature that&#8217;s been under development for awhile called heartbeats, which improve dropped connection handling and reduce timeouts. I&#8217;ll be writing a post on that shortly.</p>

<p>If you&#8217;re using a version of Orbited lower than 0.6.x, this is a great time to make the change, because <a href="http://groups.google.com/group/orbited-users/browse_thread/thread/2ce89ed5c05be260">0.6.0 marked the change</a> from alpha to beta, with the corresponding stabilization in API and core functionality. Remember to stop by the <a href="http://groups.google.com/group/orbited-users">mailing list</a>, IRC channel (#orbited on freenode or use the <a href="http://orbited.org/wiki/LiveHelp">LiveDemo</a>), and <a href="http://orbited.org/wiki/Development">Trac system</a> to participate in the development process and/or get help with Orbited.</p>
]]></content:encoded>
			<wfw:commentRss>http://orbited.org/blog/2008/09/orbited-061/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
