<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Push with Cappuccino and Tornado</title>
	<atom:link href="http://cappuccino.org/discuss/2009/10/05/push-with-cappuccino-and-tornado/feed/" rel="self" type="application/rss+xml" />
	<link>http://cappuccino.org/discuss/2009/10/05/push-with-cappuccino-and-tornado/</link>
	<description>Home of Cappuccino and Objective-J</description>
	<lastBuildDate>Wed, 24 Aug 2011 17:33:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
	<item>
		<title>By: Luca Bonifazi</title>
		<link>http://cappuccino.org/discuss/2009/10/05/push-with-cappuccino-and-tornado/comment-page-1/#comment-453</link>
		<dc:creator>Luca Bonifazi</dc:creator>
		<pubDate>Wed, 14 Oct 2009 15:45:35 +0000</pubDate>
		<guid isPermaLink="false">http://cappuccino.org/discuss/?p=463#comment-453</guid>
		<description>It needs thin for async.&lt;br&gt;script/server thin</description>
		<content:encoded><![CDATA[<p>It needs thin for async.<br />script/server thin</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Luca Bonifazi</title>
		<link>http://cappuccino.org/discuss/2009/10/05/push-with-cappuccino-and-tornado/comment-page-1/#comment-452</link>
		<dc:creator>Luca Bonifazi</dc:creator>
		<pubDate>Wed, 14 Oct 2009 15:41:37 +0000</pubDate>
		<guid isPermaLink="false">http://cappuccino.org/discuss/?p=463#comment-452</guid>
		<description>I&#039;ve tried async_sinatra on a rails metal class instead of Tornado and without juggernaut.&lt;br&gt;It worked, not well coded, just a proof of concept.&lt;br&gt;Some work to do on AppController.j for the cappuccino app, just json messages parsing and connection urls. &lt;br&gt;&lt;br&gt;Here&#039;s the metal code&lt;br&gt;&lt;br&gt;require &#039;sinatra/async&#039;&lt;br&gt;#thread safe notificator&lt;br&gt;class Looper&lt;br&gt;	include EM::Deferrable&lt;br&gt;	def initialize&lt;br&gt;		@waiters = EM::Queue.new&lt;br&gt;	end&lt;br&gt;	def add_listener(listener)&lt;br&gt;		@waiters.push(listener)&lt;br&gt;	end&lt;br&gt;	def notify(x)&lt;br&gt;		res = x.to_json&lt;br&gt;		@waiters.size().times do&lt;br&gt;			@waiters.pop{ &#124;w&#124;&lt;br&gt;				w.body res&lt;br&gt;			}&lt;br&gt;		end	&lt;br&gt;	end&lt;br&gt;end&lt;br&gt;&lt;br&gt;class SinatraTest &lt; Sinatra::Base&lt;br&gt;	register Sinatra::Async&lt;br&gt;	enable :show_exceptions&lt;br&gt;	@@df = Looper.new&lt;br&gt;	&lt;a href=&quot;mailto:@@df.callback&quot; rel=&quot;nofollow&quot;&gt;@@df.callback&lt;/a&gt; {&#124;x&#124;&lt;br&gt;		@@df.notify(x)&lt;br&gt;	}			&lt;br&gt;	def self.restart_looper&lt;br&gt;		@@df = Looper.new&lt;br&gt;		&lt;a href=&quot;mailto:@@df.callback&quot; rel=&quot;nofollow&quot;&gt;@@df.callback&lt;/a&gt; {&#124;x&#124;&lt;br&gt;			@@df.notify(x)&lt;br&gt;		}				&lt;br&gt;	end&lt;br&gt;	apost &#039;/message&#039; do&lt;br&gt;		message={:type =&gt; params[&quot;type&quot;],:sender =&gt; params[&quot;sender&quot;],:body =&gt; params[&quot;body&quot;]}&lt;br&gt;		body &quot;&quot;&lt;br&gt;		&lt;a href=&quot;mailto:@@df.set_deferred_status&quot; rel=&quot;nofollow&quot;&gt;@@df.set_deferred_status&lt;/a&gt; :succeeded, message&lt;br&gt;		SinatraTest.restart_looper&lt;br&gt;	end&lt;br&gt;	apost &#039;/color&#039; do&lt;br&gt;		color = {:type =&gt; params[&quot;type&quot;],:color =&gt; params[&quot;color&quot;]}&lt;br&gt;		body &quot;&quot;&lt;br&gt;		&lt;a href=&quot;mailto:@@df.set_deferred_status&quot; rel=&quot;nofollow&quot;&gt;@@df.set_deferred_status&lt;/a&gt; :succeeded, color&lt;br&gt;		SinatraTest.restart_looper&lt;br&gt;	end&lt;br&gt;	apost &#039;/updates&#039; do&lt;br&gt;		@@df.add_listener(self)&lt;br&gt;	end&lt;br&gt;end</description>
		<content:encoded><![CDATA[<p>I&#39;ve tried async_sinatra on a rails metal class instead of Tornado and without juggernaut.<br />It worked, not well coded, just a proof of concept.<br />Some work to do on AppController.j for the cappuccino app, just json messages parsing and connection urls. </p>
<p>Here&#39;s the metal code</p>
<p>require &#39;sinatra/async&#39;<br />#thread safe notificator<br />class Looper<br />	include EM::Deferrable<br />	def initialize<br />		@waiters = EM::Queue.new<br />	end<br />	def add_listener(listener)<br />		@waiters.push(listener)<br />	end<br />	def notify(x)<br />		res = x.to_json<br />		@waiters.size().times do<br />			@waiters.pop{ |w|<br />				w.body res<br />			}<br />		end	<br />	end<br />end</p>
<p>class SinatraTest &lt; Sinatra::Base<br />	register Sinatra::Async<br />	enable :show_exceptions<br />	@@df = Looper.new<br />	<a href="mailto:@@df.callback" rel="nofollow">@@df.callback</a> {|x|<br />		@@df.notify(x)<br />	}			<br />	def self.restart_looper<br />		@@df = Looper.new<br />		<a href="mailto:@@df.callback" rel="nofollow">@@df.callback</a> {|x|<br />			@@df.notify(x)<br />		}				<br />	end<br />	apost &#39;/message&#39; do<br />		message={:type =&gt; params["type"],:sender =&gt; params["sender"],:body =&gt; params["body"]}<br />		body &#8220;&#8221;<br />		<a href="mailto:@@df.set_deferred_status" rel="nofollow">@@df.set_deferred_status</a> :succeeded, message<br />		SinatraTest.restart_looper<br />	end<br />	apost &#39;/color&#39; do<br />		color = {:type =&gt; params["type"],:color =&gt; params["color"]}<br />		body &#8220;&#8221;<br />		<a href="mailto:@@df.set_deferred_status" rel="nofollow">@@df.set_deferred_status</a> :succeeded, color<br />		SinatraTest.restart_looper<br />	end<br />	apost &#39;/updates&#39; do<br />		@@df.add_listener(self)<br />	end<br />end</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pabloponsbordes</title>
		<link>http://cappuccino.org/discuss/2009/10/05/push-with-cappuccino-and-tornado/comment-page-1/#comment-448</link>
		<dc:creator>pabloponsbordes</dc:creator>
		<pubDate>Fri, 09 Oct 2009 14:59:16 +0000</pubDate>
		<guid isPermaLink="false">http://cappuccino.org/discuss/?p=463#comment-448</guid>
		<description>This is amazing, congratulation for your work it looks really great.&lt;br&gt;I will make some experiment with it.</description>
		<content:encoded><![CDATA[<p>This is amazing, congratulation for your work it looks really great.<br />I will make some experiment with it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Johannes Fahrenkrug</title>
		<link>http://cappuccino.org/discuss/2009/10/05/push-with-cappuccino-and-tornado/comment-page-1/#comment-446</link>
		<dc:creator>Johannes Fahrenkrug</dc:creator>
		<pubDate>Mon, 05 Oct 2009 19:09:40 +0000</pubDate>
		<guid isPermaLink="false">http://cappuccino.org/discuss/?p=463#comment-446</guid>
		<description>Very cool, Elias!</description>
		<content:encoded><![CDATA[<p>Very cool, Elias!</p>
]]></content:encoded>
	</item>
</channel>
</rss>

