node.js and sockets.io, though it's quite buggy