var server = require('socket.io') var ws = module.exports = {} var rooms = {} ws.listen = function(app){ ws.io = server(app) } ws.add = function(name){ if (name in rooms) { return } var room = rooms[name] = {} room.users = {} sockets = {} var ns = base.io.of('/' + name) ns.on('connection', function(socket){ var nick socket.on('join', function(data){ nick = data.nick if (sockets[nick]) { // already connected? sockets[nick].disconnect() sockets[nick] = socket room.users[nick] = true } }) socket.on('message', function(data){ if (messages.length > 20) { messages.shift() } messages.push(data) ns.emit('message', data) }) socket.on('disconnect', function(){ delete sockets[nick] delete room.users[nick] }) }) }