diff options
| -rw-r--r-- | server/websocket.js | 34 | ||||
| -rw-r--r-- | server/ws.js | 19 |
2 files changed, 12 insertions, 41 deletions
diff --git a/server/websocket.js b/server/websocket.js deleted file mode 100644 index ca54b68..0000000 --- a/server/websocket.js +++ /dev/null @@ -1,34 +0,0 @@ -var websocket = module.exports = {} -var io - -websocket.init = function(server){ - io = require('socket.io')(server) - return io -} - -websocket.bind = function(room){ - var room_socket = io.of('/' + room) - - var users = {}, messages = [] - - room_socket.on('connection', function(socket){ - - var nick - - socket.on("join", function(data){ - nick = data.nick - users[data.nick] = true - }) - - socket.on("msg", function(data){ - if (messages.length > 20) { messages.shift() } - messages.push(data) - room_socket.emit("msg", data) - }) - - socket.on("disconnect", function(){ - delete users[nick] - }) - - }) -} diff --git a/server/ws.js b/server/ws.js index 860319a..5819b94 100644 --- a/server/ws.js +++ b/server/ws.js @@ -10,30 +10,35 @@ ws.listen = function(app){ } ws.add = function(name){ if (name in rooms) { return } - var room = {} + var room = rooms[name] = {} room.users = {} + sockets = {} var ns = base.io.of('/' + name) ns.on('connection', function(socket){ - var username + var nick socket.on('join', function(data){ - username = data.username - if (room.users[username]) { + nick = data.nick + if (sockets[nick]) { // already connected? - room.users[username].disconnect() - room.users[username] = socket + 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 room.users[username] + delete sockets[nick] + delete room.users[nick] }) }) |
