For a couple of months now I've been working on a web app which is a socket based game where you battle against other random people in general knowledge questions.
Everything is built in Tornado and tornadio. For the curious, database is MongoDB, database glue is MongoKit and it's hosted on EC2. Thanks for all the hard work that made this possible!
All the websocket stuff is taken care of by
socket.io on the client side. A great piece of kit!
One thing that might interest people is that I actually started building the game (socket stuff) in NodeJS and eventually gave up. The reason for this was twofold:
1) I wanted to learn NodeJS by real-world example
2) Tornad.IO was causing all sorts of trouble
Then, when it came to writing tests NodeJS was just giving me pain and misery. I really gave it an honest go. I had all the latest tools installed but I was just not making enough progress to make it worthwhile. (Note: this is a side-project which means I work on it at night and on odd weekends)
Basic tests was easy but as often, the fixtures make the tests harder and harder and I found myself spending more time with async logic that business logic.
Eventually, and also when I heard some good stuff of MrJones's tornadio I created a branch, built a prototype and never looked back. It was just so much easier!
The Tornado part of it takes care of EVERYTHING except the actual socket stuff. Currently port 8888 is open and it only does socket traffic.
Another thing I think is neat is that I'm entirely leaving the authentication over to our social world: Google, Twitter and Facebook. This saves me from having to build a registration, a login, a password changing thing, a forgotten password thing, etc. Awesome!
So, have a go and come challenge me online!
Peter