Updated to work with node.js, socket.io, and express.