Stay tuned for updates. View timeline View entries
Chloe is a real time web server that doesn't suck. When writing simulchart.com as part of the Node Knockout competition last fall, we used faye.js and node.js to update javascript charts in realtime. Unfortunately, we quickly discovered that a node.js based realtime web solution, while very interesting, wasn't practical for many teams and projects. Chloe is our attempt at fixing this problem.
Chloe acts as a proxy between your users' WebSocket and long poll connections and your web application. When data comes in from your users, we send a post to your application with the data. When you want to send data out, you send a post to Chloe. We remove the scaling considerations for handling many concurrent connections. In addition, developers are not forced to learn a new paradigm in order to support realtime updates. In this way, it is extremely easy to show real time data to your users, no matter what web application framework you have chosen.
We see Chloe being used anywhere that Socket.IO is currently in use today. In fact, our browser side API is feature complete with Socket.IO and will soon be drop in compatible as well. And just like Socket.IO, Chloe also supports all major browsers back to IE 6.0. We foresee Chloe being used to show graphs that update in realtime, such as monitoring graphs showing server cpu, memory, and storage usage. It's also useful for adding realtime chat to websites and for multiplayer web-based gaming. Finally, Chloe is useful anytime you're currently using Ajax to request an update from your server, which we think describes nearly all of the current "web 2.0" applications.
As for architecture, we've chosen to write Chloe in Erlang on the server side and JavaScript in the browser. Erlang provides us with high levels of concurrency and stability. Erlang web servers have been shown to handle over 85,000 concurrent requests without falling over, as opposed to the 4,000 or so it takes to kill apache (http://www.sics.se/~joe/apachevsyaws.html). So we feel confident in saying that Chloe is built on a very stable foundation that will help ensure its long term success.
We have a few future goals for Chloe that we hope to complete before this fall. First, we want to increase the number of transports that we support to match those supported by Socket.IO. This will help manage load on the Chloe server itself, making it more robust. Second, we want to make it easier to operate and install Chloe. We already package binaries for both Mac and Ubuntu, but we would like to start building debian packages and rpms as well as providing extensive monitoring hooks. Third, we want to add clustering support to Chloe to ensure that it can grow to handle hundreds of thousands of concurrent connections without breaking a sweat. Finally, we want to do more developer outreach for Chloe to educate application developers on how easy it is to create real time web applications. By doing so, we hope to improve the state of the web and make it more useful for everyone.
We've open sourced the code under the MIT license and have it hosted on Github at https://github.com/mashion/chloe. In our readme, you'll find a handy ASCII graph showing how Chloe works with your application. You'll also find instructions on how to build and test Chloe out on your machine. We hope you enjoy playing with it!
A realtime web server that doesn't suck.
If this entry is offensive or violates the contest requirements, or you suspect the entrant is cheating.
Your use of this site is subject to the Strutta Privacy Policy.
There are currently no comments.