summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/websocket.js34
-rw-r--r--server/ws.js19
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]
})
})