<?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>Ajaxian &#187; Chat</title>
	<atom:link href="http://ajaxian.com/by/topic/chat/feed" rel="self" type="application/rss+xml" />
	<link>http://ajaxian.com</link>
	<description>Cleaning up the web with Ajax</description>
	<lastBuildDate>Thu, 18 Mar 2010 20:22:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Q42 Multiplayer Game Engine Open Sourced</title>
		<link>http://ajaxian.com/archives/q42-multiplayer-game-engine-open-sourced</link>
		<comments>http://ajaxian.com/archives/q42-multiplayer-game-engine-open-sourced#comments</comments>
		<pubDate>Thu, 02 Apr 2009 10:33:15 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Chat]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Games]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6476</guid>
		<description><![CDATA[Martin Kool of Q42 let us know that his company decided to open source the Q42 multiplayer engine which is "a lightweight, generic multi-user solution, allowing developers to create their own browser-based application or game over port 80."
The engine is written in C# on the backend, and of course, JavaScript on the front end.
You can [...]]]></description>
			<content:encoded><![CDATA[<p>Martin Kool of Q42 let us know that his company decided to <a href="http://en.q42.nl/multiplayer-engine-goes-open-source">open source the Q42 multiplayer engine</a> which is "a lightweight, generic multi-user solution, allowing developers to create their own browser-based application or game over port 80."</p>
<p>The engine is written in C# on the backend, and of course, JavaScript on the front end.</p>
<p>You can check out the <a href="http://multiplayer.q42.nl/">sample chat client</a> that leads you to the following code:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-2');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-2">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">/// &lt;reference path=&quot;Multiplayer.js&quot; /&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> ChatClient =</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; users: <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; join: <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span>&nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; ChatClient.<span style="color: #006600;">name</span> = document.<span style="color: #006600;">getElementById</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"name"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">value</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; document.<span style="color: #006600;">getElementById</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"joinForm"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">style</span>.<span style="color: #006600;">display</span> = <span style="color: #3366CC;">"none"</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; document.<span style="color: #006600;">getElementById</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"chat"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">style</span>.<span style="color: #006600;">display</span> = <span style="color: #3366CC;">"block"</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; Multiplayer.<span style="color: #006600;">init</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"ping.aspx"</span>, <span style="color:#800000;">2000</span>, ChatClient.<span style="color: #006600;">handleEvent</span>, <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color: #3366CC;">"name"</span>: <span style="color: #003366; font-weight: bold;">true</span>, <span style="color: #3366CC;">"say"</span>: <span style="color: #003366; font-weight: bold;">false</span> <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> roomName = document.<span style="color: #006600;">location</span>.<span style="color: #006600;">search</span>.<span style="color: #006600;">replace</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #0066FF;">/.*?room=<span style="color:#006600; font-weight:bold;">&#40;</span>.*<span style="color:#006600; font-weight:bold;">&#41;</span>/g</span>, <span style="color: #3366CC;">'$1'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; roomName = <span style="color:#006600; font-weight:bold;">&#40;</span>roomName == document.<span style="color: #006600;">location</span>.<span style="color: #006600;">search</span><span style="color:#006600; font-weight:bold;">&#41;</span> ? <span style="color:#800000;">0</span> : roomName;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; Multiplayer.<span style="color: #006600;">connect</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color: #3366CC;">"name"</span>: ChatClient.<span style="color: #006600;">name</span> <span style="color:#006600; font-weight:bold;">&#125;</span>, roomName<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; ChatClient.<span style="color: #006600;">writeLog</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"* "</span> + ChatClient.<span style="color: #006600;">name</span> + <span style="color: #3366CC;">" joined."</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; handleEvent: <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>userId, <span style="color: #000066;">name</span>, value<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span>!ChatClient.<span style="color: #006600;">users</span><span style="color:#006600; font-weight:bold;">&#91;</span>userId<span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span> ChatClient.<span style="color: #006600;">users</span><span style="color:#006600; font-weight:bold;">&#91;</span>userId<span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> user = ChatClient.<span style="color: #006600;">users</span><span style="color:#006600; font-weight:bold;">&#91;</span>userId<span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; user<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color: #000066;">name</span><span style="color:#006600; font-weight:bold;">&#93;</span> = value;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #000066;">name</span> == <span style="color: #3366CC;">"disconnect"</span><span style="color:#006600; font-weight:bold;">&#41;</span> ChatClient.<span style="color: #006600;">writeLog</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"* "</span> + user.<span style="color: #006600;">name</span> + <span style="color: #3366CC;">" disconnected."</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #000066;">name</span> == <span style="color: #3366CC;">"name"</span><span style="color:#006600; font-weight:bold;">&#41;</span> ChatClient.<span style="color: #006600;">writeLog</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"* "</span> + value + <span style="color: #3366CC;">" joined."</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #000066;">name</span> == <span style="color: #3366CC;">"say"</span><span style="color:#006600; font-weight:bold;">&#41;</span> ChatClient.<span style="color: #006600;">writeLog</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#40;</span>user.<span style="color: #006600;">name</span> ? user.<span style="color: #006600;">name</span> : userId<span style="color:#006600; font-weight:bold;">&#41;</span> + <span style="color: #3366CC;">": "</span> + value<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; sendMessage: <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> text = document.<span style="color: #006600;">getElementById</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"msg"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">value</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span>text.<span style="color: #006600;">indexOf</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"room"</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; Multiplayer.<span style="color: #006600;">send</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color: #3366CC;">"room"</span>: text.<span style="color: #006600;">substr</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">5</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">else</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; Multiplayer.<span style="color: #006600;">send</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color: #3366CC;">"say"</span>: text <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; ChatClient.<span style="color: #006600;">writeLog</span><span style="color:#006600; font-weight:bold;">&#40;</span>ChatClient.<span style="color: #006600;">name</span> + <span style="color: #3366CC;">": "</span> + text<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; document.<span style="color: #006600;">getElementById</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"msg"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">value</span> = <span style="color: #3366CC;">""</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; writeLog: <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>msg<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; document.<span style="color: #006600;">getElementById</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"log"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">value</span> += msg + <span style="color: #3366CC;">"<span style="color: #000099; font-weight: bold;">\n</span>"</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; document.<span style="color: #006600;">getElementById</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"log"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">scrollTop</span> = document.<span style="color: #006600;">getElementById</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"log"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">scrollHeight</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>Each user asynchronously pings a url on the central server at a given interval, sending its changes and retrieving changes of other visitors. The retrieved changes are dispatched through the javascript library, so the clientside application may act upon it. </p>
<p>The client consists of a single 5k javascript file, and the server is a single C# class library that can be embedded as source, or as a dll. </p>
<p>Focus of the q42 multiplayer engine was to give developers full control and not come up with any restrictions to the type of application that is being developed. </p>
<h2>Features</h2>
<ul>
<li>Easy customization and full control. Example project included </li>
<li>Easy grouping of users that can see eachother by means of virtual "rooms"</li>
<li>Automatic room upscaling when a certain amount of users is reached </li>
<li>Automatic cleanup of empty rooms and idle users</li>
<li>Persistent user properties (for example: name, x or y position) </li>
<li>Nonpersistent user events, such as chat messages</li>
<li>Full control over rooms, names, properties, events and its values</li>
<li>Moderating features can be implemented easily</li>
<li>Optionally allowing multiple users per session, so each browser-tab can represent a new user.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/q42-multiplayer-game-engine-open-sourced/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Chat Infection: Embed Web Chat</title>
		<link>http://ajaxian.com/archives/chat-infection-embed-web-chat</link>
		<comments>http://ajaxian.com/archives/chat-infection-embed-web-chat#comments</comments>
		<pubDate>Wed, 23 May 2007 12:51:26 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Chat]]></category>
		<category><![CDATA[Component]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Prototype]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=2422</guid>
		<description><![CDATA[Todd Fisher has created Chat Infection, a simple chat widget that sits on top of Prototype.
You can see Todd's work via core.js, which is worth looking at to see the Event.onDOMReady(..) and the like.
Here is a new room:

]]></description>
			<content:encoded><![CDATA[<p>Todd Fisher has created <a href="http://www.chatinfection.com/">Chat Infection</a>, a simple chat widget that sits on top of Prototype.</p>
<p>You can see Todd's work via <a href="http://www.chatinfection.com/javascripts/core.js">core.js</a>, which is worth looking at to see the <code>Event.onDOMReady(..)</code> and the like.</p>
<p>Here is a new room:</p>
<p><iframe src="/downloads/chatinfections"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/chat-infection-embed-web-chat/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Radius IM: Mappy Meebo in Dojo</title>
		<link>http://ajaxian.com/archives/radius-im-mappy-meebo-in-dojo</link>
		<comments>http://ajaxian.com/archives/radius-im-mappy-meebo-in-dojo#comments</comments>
		<pubDate>Thu, 26 Apr 2007 11:36:17 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Chat]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Showcase]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=2348</guid>
		<description><![CDATA[Radius IM is a mashup of Google Maps (location) with IM (teh social).

Itâ€™s the only site that shows you where your friends are hanging out and lets you surf for other people based on location. It supports all the major networks: MSN, AIM/ICQ, Yahoo, and GTalk/Jabber. And you can use radiusIM from anywhere because there [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.radiusim.com/">Radius IM</a> is a mashup of Google Maps (location) with IM (teh social).</p>
<blockquote><p>
Itâ€™s the only site that shows you where your friends are hanging out and lets you surf for other people based on location. It supports all the major networks: MSN, AIM/ICQ, Yahoo, and GTalk/Jabber. And you can use radiusIM from anywhere because there are no downloads.
</p></blockquote>
<p>It uses Ajax heavily, and is built on the Dojo Toolkit.</p>
<p><a href="http://www.radiusim.com/"><img src="http://ajaxian.com/wp-content/images/radiusim.jpg" alt="Radius IM" border="0" width="530" height="366"/></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/radius-im-mappy-meebo-in-dojo/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The Offline Battle: You aren&#8217;t on a plane</title>
		<link>http://ajaxian.com/archives/the-offline-battle-you-arent-on-a-plane</link>
		<comments>http://ajaxian.com/archives/the-offline-battle-you-arent-on-a-plane#comments</comments>
		<pubDate>Wed, 04 Apr 2007 13:15:07 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Chat]]></category>
		<category><![CDATA[Editorial]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Offline]]></category>
		<category><![CDATA[Screencast]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=2283</guid>
		<description><![CDATA[The arguments around offline have been brewing for some time. DHH came out with typical flare on why offline doesn't matter as you are either online all the time, or if you aren't, you don't mind it.
I hope that offline matters less and less over time, but for me connectivity can be very spotty indeed. [...]]]></description>
			<content:encoded><![CDATA[<p>The arguments around offline have been brewing for some time. DHH came out with typical flare on why <a href="http://www.37signals.com/svn/posts/347-youre-not-on-a-fucking-plane-and-if-you-are-it-doesnt-matter">offline doesn't matter</a> as you are either online all the time, or if you aren't, you don't mind it.</p>
<p>I hope that offline matters less and less over time, but for me connectivity can be very spotty indeed. It isn't just when you are on a plane. EVDO and friends often suck. Wireless often sucks. Hell, if they can't fix it so my calls don't drop all the time then how can I expect decent net access from anywhere?  And all of this is from someone living in the bay area, let alone Lonely, Wyoming, or somewhere in the third world (yes they have internet too!)</p>
<p>The folks at Cerulean Studios (makers of Trillian IM) <a href="http://blog.ceruleanstudios.com/?p=101">have blogged about their offline IM client</a> that is Flash based, but can jump offline.</p>
<blockquote><p>
The current focus of the technology is to rip application-quality web software *out* of the browser and *on* to the desktop. It is (currently) technically impossible (for security reasons, at the very least) to magically invoke a real application on your desktop without a download of any sorts; the current demo youâ€™re watching is using a small Firefox plugin to do its dirty work. The actual IM product is still the same web-based Flash that youâ€™re invoking from your web browser. In a way, you can just think of this as a mini web browser (very mini :) ).
</p></blockquote>
<p><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/BOKQF864DS4"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/BOKQF864DS4" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/the-offline-battle-you-arent-on-a-plane/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>OneTeam instant messaging client</title>
		<link>http://ajaxian.com/archives/oneteam-instant-messaging-client</link>
		<comments>http://ajaxian.com/archives/oneteam-instant-messaging-client#comments</comments>
		<pubDate>Tue, 06 Feb 2007 14:06:55 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Chat]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Front Page]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=2088</guid>
		<description><![CDATA[Process One has announced a new IM client called OneTeam.
The client is XUL based, so requires Firefox 2 or can be run as a stand-alone XULRunner:

OneTeam handles presence, one-to-one chat, file tranfert, user business card and group-chat in realtime. Based on the XMPP protocol, it enables both secure and private chat inside the company, but [...]]]></description>
			<content:encoded><![CDATA[<p>Process One has <a href="http://www.process-one.net/en/news/article/process_one_announces_oneteam_corporate_instant_messaging_client/">announced</a> a new IM client called <a href="http://www.process-one.net/en/oneteam/">OneTeam</a>.</p>
<p>The client is XUL based, so requires Firefox 2 or can be run as a stand-alone XULRunner:</p>
<blockquote><p>
OneTeam handles presence, one-to-one chat, file tranfert, user business card and group-chat in realtime. Based on the XMPP protocol, it enables both secure and private chat inside the company, but can also be opened in a control manner to selected servers in partner organizations.</p>
<p>For example, it is possible to be interrupted only by people working on the same project at a given time. Other messages will be delayed until a moment you have chosen.
</p></blockquote>
<p><a href="http://www.process-one.net/en/news/article/process_one_announces_oneteam_corporate_instant_messaging_client/"><img src="http://ajaxian.com/wp-content/images/processone.png" alt="Process One" border="0" width="580" height="365"/></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/oneteam-instant-messaging-client/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>New Chat Prototype using Comet and Prototype</title>
		<link>http://ajaxian.com/archives/new-chat-prototype-using-comet-and-prototype</link>
		<comments>http://ajaxian.com/archives/new-chat-prototype-using-comet-and-prototype#comments</comments>
		<pubDate>Mon, 18 Dec 2006 13:45:48 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Chat]]></category>
		<category><![CDATA[Comet]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[Showcase]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=1939</guid>
		<description><![CDATA[Chris Chabot has recently announced a new chat prototype based on a comet iframe connections for real time messaging, ajax for posting messages and sending commands, prototype.js and script.aculo.us as javascript framework, and bases of the newly written dhtml components.
As a side effect of this project, the library &#038; socket daemon framework used by the [...]]]></description>
			<content:encoded><![CDATA[<p>Chris Chabot has recently announced a new <a href="http://www.chabotc.nl/generic/chat-prototype-first-public-demo/">chat prototype</a> based on a comet iframe connections for real time messaging, ajax for posting messages and sending commands, prototype.js and script.aculo.us as javascript framework, and bases of the newly written dhtml components.</p>
<p>As a side effect of this project, the library &#038; socket daemon framework used by the chat application is released as open-source at <a href="http://www.chabotc.nl/phpsocketdaemon/">http://www.chabotc.nl/phpsocketdaemon</a> </p>
<p><a href="http://www.chabotc.nl:2001/chat.html">Check out the demo</a></p>
<p><a href="http://www.chabotc.nl/generic/chat-prototype-first-public-demo/"><img src="http://ajaxian.com/wp-content/images/chat.png" alt="Chat Prototype" border="0" width="580" height="375"/></a></p>
<p>We talked to Chris about his project, and asked him if he could share with us the biggest challenges. He kindly came up with:</p>
<blockquote><p>
The greatest challenge writing this was to make it scale up, and keep IO in check. The orignal plan was to layer out the http, irc and comet components, but the overhead of sending all the event trafic over local loops/connections when dealing with hundreds to thousands of connections, is just to much. All the memory bandwidth used would then be multiplied 3x, which was just a to high of a strain on the system.</p>
<p>Second challenge was that there were no decent comet implementations available (except for dojo's which i used as a reference), and there was definitely a challenge that there were no PHP (my preferred language) libraries or tools available which could deal with a large amount of always-on connections, even fast-cgi with something like lighttp just wouldn't scale to hundreds of live connections, and the memory needed would be horrendous, hence the new php socket daemon library was born, its a riskier model, if the program has a fatal crash (great care was taken to avoid this) the service has to be restarted again (happens automaticly), loosing the client connections in the process, however it now only takes 15Mb of memory under moderate load, and guarantees responses in under 0.15ms, something that would be unfeasible with a clasic apache/php situation.</p>
<p>Also most of the heavy lifting (such as link and color parsing, etc) has been lifted to the client, it would be way to heavy for the server to do all of this, and still be able to scale up</p>
<p>Likewise the javascript side of things took a bit of trial and error too, some channels can have thousands of messages, and hundreds of members, so browser speed has defiantly been an thing to optimize too.</p>
<p>Lastly the back-end uses a plain old IRC server, which is almost infinitely scalable, just add a server, link the IRC servers together, and run another web chat back-end on it, repeat ad infintum.. (irc networks are known to have many hundreds of thousands of people connected, using this as the backbone of the messaging provides guaranteed scalability)
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/new-chat-prototype-using-comet-and-prototype/feed</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Meebo Update: Now more like a native app?</title>
		<link>http://ajaxian.com/archives/meebo-update-now-more-like-a-native-app</link>
		<comments>http://ajaxian.com/archives/meebo-update-now-more-like-a-native-app#comments</comments>
		<pubDate>Mon, 06 Nov 2006 11:29:13 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Chat]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Showcase]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=1769</guid>
		<description><![CDATA[
Meebo made a huge splash when it came onto the scene. It was an example of a real world app inside the browser, in this case chat. From that we started to see chat everywhere :)
It also had the side benefit to proof that people would trust their passwords into a meta service like this, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://meebo.com/"><img src="http://ajaxian.com/wp-content/images/meebologo.png" alt="Meebo Logo" border="0" width="170" height="66" style="float: right;" /></a></p>
<p>Meebo made a huge splash when it came onto the scene. It was an example of a real world app inside the browser, in this case chat. From that we started to see chat everywhere :)</p>
<p>It also had the side benefit to proof that people would trust their passwords into a meta service like this, but that is another issue.</p>
<p>Meebo just had a large update that they call <a href="http://blog.meebo.com/?p=225">release XX: one giant leap</a>.</p>
<p>With the pop-out feature you can see that it is hard to tell the difference between meebo and a native app.</p>
<p>Here is meebo and Adium side by side:</p>
<p><a href="http://meebo.com/"><img src="http://ajaxian.com/wp-content/images/meeboupdate.png" alt="Meebo Update" border="0" width="367" height="405"/></a></p>
<p><b>What's New</b></p>
<blockquote>
<p>1) <i>New visual design</i> - Sandy and I were Photoshop newbies when we first designed meebo and we&#8217;ve been itching for an updated look.  We&#8217;re thrilled to show off David&#8217;s latest work!</p>
<p>2) <i>Pop outs</i> - click on that little <img src="http://images.meebo.com/image/skin/beta/img/popout.gif"/> icon in your IM window to &#8220;pop&#8221; the window out of the main meebo browser (don&#8217;t forget to disable any pop-up blockers you have for meebo.com). </p>
<p>3) <i>Drag and drop buddy list management</i> - Harry A. wrote, &#8220;I&#8217;d like a way to easily consolidate and manage groups.&#8221;  Mike C., Frank R., and Rafael F. agree.  The ability to move buddies between groups has been our most popular feature request for a while.  Enjoy!</p>
<p>4) <i>Skinning</i> - we understand a few of you might be attached to the meebo&#8217;s first look and feel.  If you are feeling nostalgic, we&#8217;ve introduced the ability to switch back to the old skin - just go to the preference area and select the &#8216;Classic&#8217; skin.  Keep an eye out for more skins in the future.</p>
<p><b>More good stuff&#8230;</b></p>
<p>* <i>Individual sign on and off</i> - now you can manage your screen names one-by-one.  Just click on the drop-down menu in the left-hand console area.</p>
<p>* <i> Localization</i> - In addition to Bangla, Creole, Esperanto, Iloko, Jawa, Latin, Malagasy, Marathi, Mongolian, Nias, Swiss German, Thai, Uzbek support - we&#8217;ve also translated other parts of the UI such as buttons, menus, and links.  The language updates dynamically based upon your location and preference too.  Thai looks really good on the new front page!</p>
<p>* <i> Updated Chat Logs</i> - Chatlogs just got a facelift.  Power-users (like Sandy and Andreas) will appreciate the new design and speedier loading times.</p>
<p>* <i> AIM Profiles</i> - This has been one of the top three requests for many weeks.  AIM users, check out the &#8216;Set Profiles&#8217; in the console area.  Mark recently got engaged, guess what he announced in his profile this week!  Congrats!</p>
<p>* <i> Optimization</i> - We&#8217;re always trying to make meebo better and faster.  Those of you with very large buddylists, like user rnbmelody, will appreciate the new performance enhancements.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/meebo-update-now-more-like-a-native-app/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Your Corner: Ajax Communication Widget</title>
		<link>http://ajaxian.com/archives/your-corner-ajax-communication-widget</link>
		<comments>http://ajaxian.com/archives/your-corner-ajax-communication-widget#comments</comments>
		<pubDate>Tue, 18 Apr 2006 16:46:22 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Chat]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Showcase]]></category>

		<guid isPermaLink="false">http://ajaxian.com/archives/your-corner-ajax-communication-widget</guid>
		<description><![CDATA[MontRed has created Your Corner as a way to get their users to communicate with them.
It is a simple Ajax chat widget that allows people to leave notes.
It is implemented with the JSOLait library and you can place with a demo box.

]]></description>
			<content:encoded><![CDATA[<p>MontRed has created <a href="http://blog.montred.com/2006/04/15/your-corner-a-place-to-interact">Your Corner</a> as a way to get their users to communicate with them.</p>
<p>It is a simple Ajax chat widget that allows people to leave notes.</p>
<p>It is implemented with the <a href="http://jsolait.net/">JSOLait</a> library and you can <a href="http://www.montred.com/your-corner.html">place with a demo box</a>.</p>
<p><a href="http://www.montred.com/your-corner.html"><img src="http://blog.montred.com/wp-content/themes/default/images/your-corner-history-box.gif" width="250" height="268" border="0"/></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/your-corner-ajax-communication-widget/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Pyro: An example of a site specific browser</title>
		<link>http://ajaxian.com/archives/pyro-an-example-of-a-site-specific-browser</link>
		<comments>http://ajaxian.com/archives/pyro-an-example-of-a-site-specific-browser#comments</comments>
		<pubDate>Tue, 18 Apr 2006 14:57:38 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Chat]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Showcase]]></category>

		<guid isPermaLink="false">http://ajaxian.com/archives/pyro-an-example-of-a-site-specific-browser</guid>
		<description><![CDATA[Pyro is an example of an application that blurs the lines between a rich application and an ajax application.
Pyro embeds WebKit on OS X (which is very easy to do, enabling these applications nicely) to offer a rich experience on top of 37 Signals Campfire chat application.
Why would you want to do this? What if [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.karppinen.fi/pyro/">Pyro</a> is an example of an application that blurs the lines between a rich application and an ajax application.</p>
<p>Pyro embeds WebKit on OS X (which is very easy to do, enabling these applications nicely) to offer a rich experience on top of 37 Signals Campfire chat application.</p>
<p>Why would you want to do this? What if you want a dock icon to bounce when a message comes in, or show you how many messages are there, or do a good job at alerting you in other ways (e.g. could intergrate with Growl). Pyro does those things that a pure web application can not.</p>
<p>This isn't the first of these hybrids. Apple iTunes itself is kind of like this. A rich shell around a web engine. But iTunes doesn't offer a pure ajax application to go with it.</p>
<p><a href="http://www.karppinen.fi/pyro/"><img src="http://www.karppinen.fi/pyro/images/pyroscreen.png" border="0" width="360" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/pyro-an-example-of-a-site-specific-browser/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Jive Wildfire Server: Enterprise IM</title>
		<link>http://ajaxian.com/archives/jive-wildfire-server-enterprise-im</link>
		<comments>http://ajaxian.com/archives/jive-wildfire-server-enterprise-im#comments</comments>
		<pubDate>Thu, 16 Mar 2006 14:24:16 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Chat]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Showcase]]></category>

		<guid isPermaLink="false">http://ajaxian.com/archives/jive-wildfire-server-enterprise-im</guid>
		<description><![CDATA[We aren't done in the IM race :) Jive Software has released Wildfire Server an open XMPP (Jabber) based IM solution:

Wildfire is an enterprise instant messaging (EIM) server dual-licensed under the Open Source GPL and commercially. It uses the only widely adopted open protocol for instant messaging, XMPP (also called Jabber). Wildfire is incredibly easy [...]]]></description>
			<content:encoded><![CDATA[<p>We aren't done in the IM race :) Jive Software has released <a href="http://jivesoftware.org/wildfire/">Wildfire Server</a> an open XMPP (Jabber) based IM solution:</p>
<blockquote><p>
Wildfire is an enterprise instant messaging (EIM) server dual-licensed under the Open Source GPL and commercially. It uses the only widely adopted open protocol for instant messaging, XMPP (also called Jabber). Wildfire is incredibly easy to setup and adminster, but offers rock-solid security and performance.<br />
Use Wildfire in your organization as a more secure and feature-rich alternative to the consumer IM networks. Or, replace your existing EIM server with a more open, easier to use, and much less expensive solution.
</p></blockquote>
<p><a href="http://jivesoftware.org/wildfire/"><img src="http://ajaxian.com/wp-content/images/atlassianjive.jpg" alt="Jive Wildfire IM" border="0" width="787" height="713"/></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/jive-wildfire-server-enterprise-im/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Gabbly &#8211; Embedded Website Chat</title>
		<link>http://ajaxian.com/archives/gabbly-embedded-website-chat</link>
		<comments>http://ajaxian.com/archives/gabbly-embedded-website-chat#comments</comments>
		<pubDate>Sun, 12 Mar 2006 09:23:11 +0000</pubDate>
		<dc:creator>Michael Mahemoff</dc:creator>
				<category><![CDATA[Chat]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Showcase]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=980</guid>
		<description><![CDATA[Gabbly (via Digg) is a new application that embeds a chat window in any web page. It seems to be based on web proxying and iframes: You think you're looking at the target website, e.g. digg.com, but you're actually looking at gabbly.com with an iframe for digg.com and an iframe above that for the chat [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://gabbly.com">Gabbly</a> (via <a href="http://digg.com">Digg</a>) is a new application that embeds a chat window in any web page. It seems to be based on web proxying and iframes: You think you're looking at the target website, e.g. digg.com, but you're actually looking at gabbly.com with an iframe for digg.com and an iframe above that for the chat window. The URL in this case is <a <a href="http://gabbly.com/digg.com">http://gabbly.com/digg.com</a>.</p>
<p><a href="http://gabbly.com/digg.com"><img src="http://ajaxian.com/wp-content/images/gabbly.png" alt="" border="0" width="500" height="400"/></a></p>
<p>The system is similar to <a href="http://quek.nl">Quek</a>, which does something similar but with little Quek avatars running around the page. Unfortunately, it's never been that stable.</p>
<p><a href="http://quek.nl/q/index.jsp?url=http://www.digg.com"><img src="http://ajaxian.com/wp-content/images/quek.png" alt="" border="0" width="500" height="300"/></a></p>
<p>Also, <a href="http://wizlite.com">WizLite</a> does web page annotation, but relies on either a bookmarklet or a browser extension.  With both Wizlite and Gabbly, website authors can also choose to embed the special content on their pages by including some Javascript.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/gabbly-embedded-website-chat/feed</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>37Signals load testing Campfire &#8211; new chat application</title>
		<link>http://ajaxian.com/archives/37signals-load-testing-campfire-new-chat-application</link>
		<comments>http://ajaxian.com/archives/37signals-load-testing-campfire-new-chat-application#comments</comments>
		<pubDate>Fri, 03 Feb 2006 20:57:55 +0000</pubDate>
		<dc:creator>Rob Sanheim</dc:creator>
				<category><![CDATA[Chat]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=822</guid>
		<description><![CDATA[37Signals is load testing their new chat application, Campfire.  Run over there to take a look and try to bring their servers down. =)  Would you use this over standard instant messaging or the other chat apps out there?  Campfire certainly looks like the most user friendly chat app for those clients [...]]]></description>
			<content:encoded><![CDATA[<p>37Signals is <a href="http://37signals.com/svn/archives2/getting_real_help_us_put_out_the_campfire.php">load testing</a> their new chat application, Campfire.  <a href="http://test.campfirenow.com/preview">Run over there</a> to take a look and try to bring their servers down. =)  Would you use this over standard instant messaging or the <a href="http://ajaxian.com/by/topic/chat/">other chat apps</a> out there?  Campfire certainly looks like the most user friendly chat app for those clients who aren't technically inclined.</p>
<p><b>Update: </b>The test is over.</p>
<p><a href="http://test.campfirenow.com/preview"><img src="http://ajaxian.com/wp-content/images/campfire_com.png" alt="" border="0" width="600" height="390"/></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/37signals-load-testing-campfire-new-chat-application/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Realtime on Rails 2.0</title>
		<link>http://ajaxian.com/archives/realtime-on-rails-20</link>
		<comments>http://ajaxian.com/archives/realtime-on-rails-20#comments</comments>
		<pubDate>Wed, 18 Jan 2006 17:41:52 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Chat]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://ajaxian.com/archives/realtime-on-rails-20</guid>
		<description><![CDATA[Martin Scheffler has released his second version of Realtime on Rails (we posted on version 1.0).
Realtime on Rails is a RoR app using Ajax HTTP streaming to update browsers from the server. 
It includes: 

A ruby HTTPD for mediating the push connections
A JS Window system and two demo apps: Chat/IM with rich text editing (Dojo) [...]]]></description>
			<content:encoded><![CDATA[<p>Martin Scheffler has released his second version of <a href="http://ccml01.medien.uni-weimar.de/">Realtime on Rails</a> (we posted on <a href="/archives/realtime-on-rails-real-time-chat-using-xhr-push">version 1.0</a>).</p>
<p>Realtime on Rails is a RoR app using Ajax HTTP streaming to update browsers from the server. </p>
<p>It includes: </p>
<ul>
<li>A ruby HTTPD for mediating the push connections</li>
<li>A JS Window system and two demo apps: Chat/IM with rich text editing (Dojo) MP3 player with shared playlist (using AFLAX)</li>
</ul>
<p>This application will be published under an LGPL license at the beginning of February.</p>
<p><a href="http://ccml01.medien.uni-weimar.de/"><img src="/wp-content/images/realtimerails.jpg" alt="Realtime on Rails" border="0" width="620" height="561"/></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/realtime-on-rails-20/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>AJChat: Another Chat System</title>
		<link>http://ajaxian.com/archives/ajchat-another-chat-system</link>
		<comments>http://ajaxian.com/archives/ajchat-another-chat-system#comments</comments>
		<pubDate>Thu, 29 Dec 2005 14:44:28 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Chat]]></category>
		<category><![CDATA[Front Page]]></category>

		<guid isPermaLink="false">http://test.ajaxian.com/archives/ajchat-another-chat-system</guid>
		<description><![CDATA[AJChat is one of the latest ajaxian chat systems to come along.
It offers a few differences, such as promoting the chat service rather than the just the chat client.
This means that you can be in any chat room, and click "Options" and "Share Chat" to get the code that you can embed in your own [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ajchat.com/">AJChat</a> is one of the latest ajaxian chat systems to come along.</p>
<p>It offers a few differences, such as promoting the chat service rather than the just the chat client.</p>
<p>This means that you can be in any chat room, and click "Options" and "Share Chat" to get the code that you can embed in your own site.</p>
<p><a href="http://www.ajchat.com/chat/ajax"><img alt="ajchat.jpg" src="http://ajaxian.com/archives/ajchat.jpg" width="638" height="303" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/ajchat-another-chat-system/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Meebo IM Client Growth</title>
		<link>http://ajaxian.com/archives/meebo-im-client-growth</link>
		<comments>http://ajaxian.com/archives/meebo-im-client-growth#comments</comments>
		<pubDate>Tue, 13 Dec 2005 17:21:44 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Chat]]></category>
		<category><![CDATA[Front Page]]></category>

		<guid isPermaLink="false">http://test.ajaxian.com/archives/meebo-im-client-growth</guid>
		<description><![CDATA[TechCrunch has brought up Meebo's Impressive Growth.
Meebo is the top Ajax client, and is a fantastic example of what you can do with Ajax. It looks nice, acts responsive, etc. There is a reason that it gets mentioned in all of the lists of quality Ajax applications.
I think an interesting debate could be have on [...]]]></description>
			<content:encoded><![CDATA[<p>TechCrunch has brought up <a href="http://www.techcrunch.com/2005/12/12/meebos-impressive-growth/">Meebo's Impressive Growth</a>.</p>
<p>Meebo is the top Ajax client, and is a fantastic example of what you can do with Ajax. It looks nice, acts responsive, etc. There is a reason that it gets mentioned in all of the lists of quality Ajax applications.</p>
<p>I think an interesting debate could be have on whether IM is the kind of application that should be implemented via Ajax versus a rich desktop interface.</p>
<p>Some things that come to mind for me:</p>
<ul>
<li>Does it help to have the IM widget within a browser?</li>
<li>What does the browser add to the experience? (mashups?)</li>
<li>It could be nice to be able to leave the web, but have the client stay logged in to IM</li>
<li>Do you feel weird inputting your user/password for each service to a web page?</li>
<li>Do you want offline access to your conversations</li>
<li>It is interesting that a lot of students/workers use it to get passed firewalls and such, but is it enough for rich clients to HTTP tunnel?</li>
</ul>
<p>What are your thoughts?</p>
<p><a href="http://meebo.com/"><img alt="meebo-client.jpg" src="http://ajaxian.com/archives/meebo-client.jpg" width="208" height="222" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/meebo-im-client-growth/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>&#8220;Realtime on Rails&#8221; &#8211; real time chat using XHR Push</title>
		<link>http://ajaxian.com/archives/realtime-on-rails-real-time-chat-using-xhr-push</link>
		<comments>http://ajaxian.com/archives/realtime-on-rails-real-time-chat-using-xhr-push#comments</comments>
		<pubDate>Thu, 10 Nov 2005 15:26:27 +0000</pubDate>
		<dc:creator>Rob Sanheim</dc:creator>
				<category><![CDATA[Chat]]></category>
		<category><![CDATA[Front Page]]></category>

		<guid isPermaLink="false">http://test.ajaxian.com/archives/realtime-on-rails-real-time-chat-using-xhr-push</guid>
		<description><![CDATA[Martin Scheffler posted this morning on the Ruby on Rails list about a new realtime chat application called Realtime on Rails.  If you are using a Mozilla based browser, it will keep open a HTTP connection and push the chat data as JSON.  In other browsers the server is polled every five seconds [...]]]></description>
			<content:encoded><![CDATA[<p>Martin Scheffler posted this morning on the Ruby on Rails list about a new realtime chat application called <a href="http://ccml01.medien.uni-weimar.de:8071/simplechat">Realtime on Rails.</a>  If you are using a Mozilla based browser, it will keep open a HTTP connection and push the chat data as <a href="http://www.crockford.com/JSON/index.html">JSON.</a>  In other browsers the server is polled every five seconds or when you are actively typing.  </p>
<p>For more details and the full docs check out <a href="http://www.uni-weimar.de/~scheffl2/wordpress/?p=19">Martin's blog entry,</a> or grab the <a href="http://www.uni-weimar.de/~scheffl2/amsterdam/realtime_on_rails.0.0.1.tar.gz">source</a> (GNU GPL).  Or just <a href="http://ccml01.medien.uni-weimar.de:8071/simplechat">go to the demo</a> and play around with it - keep in mind its the first release so no guarantees about stability!</p>
<p>The responsiveness in Firefox was very impressive, better then any I'd seen from similiar Ajax chat apps.  Very nice work, guys!</p>
<p><a href="http://ccml01.medien.uni-weimar.de:8071/simplechat"><img alt="realtime_for_rails.png" src="http://www.ajaxian.com/archives/realtime_for_rails.png" width="615" height="284" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/realtime-on-rails-real-time-chat-using-xhr-push/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Treehouse Chat and Server Side JavaScript</title>
		<link>http://ajaxian.com/archives/treehouse-chat-and-server-side-javascript</link>
		<comments>http://ajaxian.com/archives/treehouse-chat-and-server-side-javascript#comments</comments>
		<pubDate>Tue, 13 Sep 2005 16:05:55 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Chat]]></category>
		<category><![CDATA[Editorial]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://test.ajaxian.com/archives/treehouse-chat-and-server-side-javascript</guid>
		<description><![CDATA[Wesley Tanaka has written Yet Another Chat Client, and uses this experience to discuss some of the implementation details.
Wesley ends up wanting to have a &#60;?JS ... ?&#62; construct a la PHP. Why does he want this? So he can share code between the client and server side of the application.
He rewrote the same functionality [...]]]></description>
			<content:encoded><![CDATA[<p>Wesley Tanaka has written <a href="http://treehouse.ofb.net/chat/?lang=en">Yet Another Chat Client</a>, and uses this experience to <a href="http://www.livejournal.com/~wtanaka/110132.html">discuss some of the implementation details</a>.</p>
<p>Wesley ends up wanting to have a &lt;?JS ... ?&gt; construct a la PHP. Why does he want this? So he can share code between the client and server side of the application.</p>
<p>He rewrote the same functionality for a couple of the features (although you could of course use XHR to run that functionality on the server side and get the result back to the client).</p>
<p>This is another example of how JavaScript on the server side is probably going to grow.</p>
<p>With tools like <a href="http://www.mozilla.org/rhino/">Mozilla Rhino</a>, you can do this right now.</p>
<p>Are many of you using JavaScript on the server?</p>
<p><a href="http://treehouse.ofb.net/chat/?lang=en"><img alt="Treehousechat" src="http://www.ajaxian.com/archives/treehousechat.png" width="640" height="470" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/treehouse-chat-and-server-side-javascript/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>JWChat: Jabber Web Chat</title>
		<link>http://ajaxian.com/archives/jwchat-jabber-web-chat</link>
		<comments>http://ajaxian.com/archives/jwchat-jabber-web-chat#comments</comments>
		<pubDate>Fri, 05 Aug 2005 06:54:11 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Chat]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Showcase]]></category>

		<guid isPermaLink="false">http://test.ajaxian.com/archives/jwchat-jabber-web-chat</guid>
		<description><![CDATA[In the YAChat category, we have a Jabber Web Chat: JWChat:
JWChat aims to be a full featured, web based Jabber client. It uses only JavaScript and HTML on the client-side. Currently it supports basic jabber instant messaging, roster management and muc-based groupchats.
JWChat is an advanced instant messenger (IM) just like AIM, MSN Messenger, Yahoo! Messenger [...]]]></description>
			<content:encoded><![CDATA[<p>In the YAChat category, we have a Jabber Web Chat: <a href="http://jwchat.sourceforge.net/">JWChat</a>:</p>
<p>JWChat aims to be a full featured, web based Jabber client. It uses only JavaScript and HTML on the client-side. Currently it supports basic jabber instant messaging, roster management and muc-based groupchats.</p>
<p>JWChat is an advanced instant messenger (IM) just like AIM, MSN Messenger, Yahoo! Messenger or ICQ. This means you can manage your contacts, chat with other users directly or join a groupchat room for collaborative communication. Unlike other IMs you can use this with your web browser only without having to install any additional software at all. For a list of supported browsers see below.</p>
<p>All of your settings, bookmarks and your contact list are stored at the server side. This means that you have access to your personalized client from almost any computer as long as it's got access to the internet. </p>
<p>Check out the <a href="http://jwchat.org/">Demo Site</a></p>
<p><img alt="jwchat.jpg" src="http://www.ajaxian.com/archives/jwchat.jpg" width="847" height="694" /></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/jwchat-jabber-web-chat/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Drupal adds Ajaxian Chat Module</title>
		<link>http://ajaxian.com/archives/drupal-adds-ajaxian-chat-module</link>
		<comments>http://ajaxian.com/archives/drupal-adds-ajaxian-chat-module#comments</comments>
		<pubDate>Tue, 02 Aug 2005 16:12:13 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Chat]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Showcase]]></category>

		<guid isPermaLink="false">http://test.ajaxian.com/archives/drupal-adds-ajaxian-chat-module</guid>
		<description><![CDATA[The popular open source content management platform Drupal, has started to get Ajaxian.
They just released an Ajaxian chat module.
The code exists here.

]]></description>
			<content:encoded><![CDATA[<p>The popular open source content management platform <a href="http://drupal.org/">Drupal</a>, has started to get Ajaxian.</p>
<p>They just <a href="http://drupal.org/node/27689">released</a> an Ajaxian chat module.</p>
<p>The <a href="http://cvs.drupal.org/viewcvs/drupal/contributions/modules/chat/">code exists here</a>.</p>
<p><img alt="drupalajaxchat.gif" src="http://www.ajaxian.com/archives/drupalajaxchat.gif" width="560" height="335" /></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/drupal-adds-ajaxian-chat-module/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Harry Potter: Tom Riddle&#8217;s Magical Diary Comes to Life with Ajax</title>
		<link>http://ajaxian.com/archives/harry-potter-tom-riddles-magical-diary-comes-to-life-with-ajax</link>
		<comments>http://ajaxian.com/archives/harry-potter-tom-riddles-magical-diary-comes-to-life-with-ajax#comments</comments>
		<pubDate>Sat, 16 Jul 2005 09:24:49 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Chat]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Showcase]]></category>

		<guid isPermaLink="false">http://test.ajaxian.com/archives/harry-potter-tom-riddles-magical-diary-comes-to-life-with-ajax</guid>
		<description><![CDATA[Wael Chatila has done the coolest Ajaxian Harry Potter application to date :)
Wael implemented a magical diary, inspired by the magical diary in "Harry Potter and the Chamber of Secrets" using a chatbot, Ajax and some cool scripting :)
How about that for an ode to the new book coming out this weekend?
Type in questions, and [...]]]></description>
			<content:encoded><![CDATA[<p>Wael Chatila has done the coolest Ajaxian Harry Potter application to date :)</p>
<p>Wael <a href="http://pandorabots.com/pandora/talk?botid=c96f911b3e35f9e1">implemented a magical diary, inspired by the magical diary in "Harry Potter and the Chamber of Secrets"</a> using a chatbot, Ajax and some cool scripting :)</p>
<p>How about that for an ode to the new book coming out this weekend?</p>
<p>Type in questions, and Tom Riddle will answer them.</p>
<p><a href="http://pandorabots.com/pandora/talk?botid=c96f911b3e35f9e1"><img alt="ajaxian-harry-potter.jpg" src="http://www.ajaxian.com/archives/ajaxian-harry-potter.jpg" width="725" height="523" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/harry-potter-tom-riddles-magical-diary-comes-to-life-with-ajax/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>
