Once again I've started kicking around the idea of creating a web based chat system. After seeing the possibilities from the folks at Meebo, I am starting to tinker with a prototype based on Jabber + HTTP Binding (XEP-0124). This standard allows Ajax requests to be made directly to the jabber server (or thought an HTTP proxy to the server), cutting out any effort required to make a custom communication layer. Further, it allows the full extensibility of Jabber to be realized, since raw packets are delivered directly to the web client. It also allows for sessions to be suspended and resumed, which means that if a person refreshes the browser window or leaves the site entirely and returns, they never have to sign off of the network because they retain a session key stored as a cookie. Their browser simply received messages that were queued up after their suspension upon a call to resume (disclaimer: I haven't fully tested suspend/resume functionality).
From my understanding (which comes from job postings and looking at JS code), Meebo uses a modified version of Gaim with a custom Ajax communication layer. I question why they didn't take the approach that I am taking, but think it could be to do with some factor I haven't taken into account. So far though, my experimentation has been very fruitful:
In the past 12 hours I have been able to piggy back off of existing tools to make a server that supports communication with external gateways (AIM, MSN, et al), and a client that is able to register, sign on, send and receive IMs, and receive roster updates. Not bad, if I do say so myself.
No estimate or time line about when source code will be released.