A gazillion-user comet server with C

22 points by EGreg ↗ HN
I'm going to be implementing chat soon in this product I'm building (kind of keeping it on the DL until I have something big to show)... so I started researching comet servers. And I came across this:

http://aleccolocco.blogspot.com/2008/10/gazillion-user-comet-server-with.html

Whoa nelly, this should do nicely. Thought I'd share.

12 comments

[ 4.5 ms ] story [ 47.4 ms ] thread
you should probably structure this submission different.
It's not so bad. It's just one of those "hey, found something cool. Here's a link, if you're interested".
I would recommend nodejs or the twisted framework for python if you don't want to go the C route
Twisted works well but as with most dynamic versions it gets too non-deterministic for my taste. You have to monitor those.

I barely skimmed node.js, it looks very good. I have an nginx-V8 module for a web framwork I'm working on. Both give very good control to keep the system with nice logarithmic resource usage, without spikes. One of my unfinished blog drafts talks about it.

Based on the same async IO fundamentals:

Orbited is a complete solution based on Twisted. It handles the most difficult part - crossbrowser portability already - http://orbited.org/

Too bad he never finished his 4-part write up. The linked article was pretty interesting to read. In one of his later postings he mentioned APE (AJAX Push Engine) - anyone taken a look at that?
I'm ashamed for not finishing up in so long. 2008!

The post was following Richard Jones' Mochiweb/erlang "Million-user" implementation. And he ended up using a libevent-based solution to handle connections in front of Mochiweb :-/

Also note the post on Linux ephemeral port issue: http://aleccolocco.blogspot.com/2008/11/ephemeral-ports-prob...

Niels, from /dev/poll (back then) and libevent fame got into the thread.

Well, OK. It's Sunday and it's beautiful outside, but let's see if I can get some update today.

Looks cool, but I'm much rather use Erlang because of the whole framework it provides.