From 4514c2c49f0e0ec7cf9911dc254a8d20644d5def Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Wed, 5 Aug 2015 21:28:20 -0400 Subject: pushing messages into a div --- server/ws.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'server/ws.js') diff --git a/server/ws.js b/server/ws.js index 5819b94..75f430c 100644 --- a/server/ws.js +++ b/server/ws.js @@ -11,10 +11,11 @@ ws.listen = function(app){ ws.add = function(name){ if (name in rooms) { return } var room = rooms[name] = {} + var messages = room.messages = [] room.users = {} sockets = {} - var ns = base.io.of('/' + name) + var ns = ws.io.of('/' + name) ns.on('connection', function(socket){ @@ -27,6 +28,7 @@ ws.add = function(name){ sockets[nick].disconnect() sockets[nick] = socket room.users[nick] = true + socket.emit("messages", messages) } }) -- cgit v1.2.3-70-g09d2 From 0809c1c3a02943d51c6882039004365daa3e3920 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Wed, 5 Aug 2015 21:40:04 -0400 Subject: functioning chat --- public/js/lib/views/room/chat.js | 2 +- public/js/lib/views/room/room.js | 2 ++ server/ws.js | 5 +++++ 3 files changed, 8 insertions(+), 1 deletion(-) (limited to 'server/ws.js') diff --git a/public/js/lib/views/room/chat.js b/public/js/lib/views/room/chat.js index 2c1140e..058d02d 100644 --- a/public/js/lib/views/room/chat.js +++ b/public/js/lib/views/room/chat.js @@ -45,7 +45,7 @@ var ChatView = View.extend({ msg.nick = user.username msg.date = +new Date this.add(msg) - app.socket.send("message", msg) + app.socket.emit("message", msg) }, empty: function(){ diff --git a/public/js/lib/views/room/room.js b/public/js/lib/views/room/room.js index c8d7f3f..10c4d08 100644 --- a/public/js/lib/views/room/room.js +++ b/public/js/lib/views/room/room.js @@ -11,6 +11,8 @@ var RoomView = View.extend({ this.userlist = new UserlistView () app.socket = ws.connect(name) + + app.socket.emit("join", { nick: user.username }) app.socket.on("joined", function(msgs){ msgs && msgs.forEach(chat.add) diff --git a/server/ws.js b/server/ws.js index 75f430c..7199ac3 100644 --- a/server/ws.js +++ b/server/ws.js @@ -14,6 +14,7 @@ ws.add = function(name){ var messages = room.messages = [] room.users = {} sockets = {} + console.log("new room >> " + name) var ns = ws.io.of('/' + name) @@ -21,8 +22,10 @@ ws.add = function(name){ var nick + console.log("new connection ...") socket.on('join', function(data){ nick = data.nick + console.log("joined >> " + nick) if (sockets[nick]) { // already connected? sockets[nick].disconnect() @@ -33,6 +36,8 @@ ws.add = function(name){ }) socket.on('message', function(data){ + console.log(data) + console.log("<" + data.nick + "> " + data.msg) if (messages.length > 20) { messages.shift() } messages.push(data) ns.emit('message', data) -- cgit v1.2.3-70-g09d2 From 78f7f5ae58d9357e240873c137e8940e0647fbbd Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Thu, 6 Aug 2015 01:15:05 -0400 Subject: userlist stuph --- public/js/lib/views/room/chat.js | 2 +- public/js/lib/views/room/room.js | 19 ++++++++++--------- public/js/lib/views/room/userlist.js | 20 +++++++++++++++++--- server/ws.js | 8 +++----- 4 files changed, 31 insertions(+), 18 deletions(-) (limited to 'server/ws.js') diff --git a/public/js/lib/views/room/chat.js b/public/js/lib/views/room/chat.js index 058d02d..222522f 100644 --- a/public/js/lib/views/room/chat.js +++ b/public/js/lib/views/room/chat.js @@ -9,7 +9,7 @@ var ChatView = View.extend({ "scroll #messages": "scroll", }, - initialize: function(){ + initialize: function(socket){ var $msg = this.$msg = this.$("#message") this.$messages = this.$("#messages") this.messages = this.$messages.get(0) diff --git a/public/js/lib/views/room/room.js b/public/js/lib/views/room/room.js index 10c4d08..3b3b253 100644 --- a/public/js/lib/views/room/room.js +++ b/public/js/lib/views/room/room.js @@ -6,20 +6,21 @@ var RoomView = View.extend({ }, initialize: function(name){ - this.name = name - chat = this.chatView = new ChatView () - this.userlist = new UserlistView () app.socket = ws.connect(name) + + var base = this + this.name = name + chat = this.chatView = new ChatView (socket) + this.userlist = new UserlistView (socket) + app.socket.emit("join", { nick: user.username }) - - app.socket.on("joined", function(msgs){ - msgs && msgs.forEach(chat.add) - }) - app.socket.on("messages", function(msgs){ - msgs && msgs.forEach(chat.add) + app.socket.on("welcome", function(room){ + room.messages.forEach(chat.add) + base.userlist.users = room.users + base.userlist.update() }) app.socket.on("message", function(msg){ diff --git a/public/js/lib/views/room/userlist.js b/public/js/lib/views/room/userlist.js index d638a02..600f647 100644 --- a/public/js/lib/views/room/userlist.js +++ b/public/js/lib/views/room/userlist.js @@ -5,11 +5,25 @@ var UserlistView = View.extend({ events: { }, - initialize: function(){ + users: {}, + initialize: function(socket){ + var base = this + app.socket.on("joined", function(data){ + base.users[data.nick] = true + base.update() + }) + app.socket.on("parted", function(data){ + delete base.users[data.nick] + base.update() + }) }, - update: function(users){ - + update: function(){ + base.el.empty() + Object.keys(base.users).sort().forEach(function(nick){ + var el = document.createElement("div") + base.el.appendChild(el) + }) }, }) \ No newline at end of file diff --git a/server/ws.js b/server/ws.js index 7199ac3..92c7d5a 100644 --- a/server/ws.js +++ b/server/ws.js @@ -22,22 +22,19 @@ ws.add = function(name){ var nick - console.log("new connection ...") socket.on('join', function(data){ nick = data.nick - console.log("joined >> " + nick) if (sockets[nick]) { // already connected? sockets[nick].disconnect() sockets[nick] = socket room.users[nick] = true - socket.emit("messages", messages) + socket.emit("welcome", room) + ns.emit('joined', data) } }) socket.on('message', function(data){ - console.log(data) - console.log("<" + data.nick + "> " + data.msg) if (messages.length > 20) { messages.shift() } messages.push(data) ns.emit('message', data) @@ -46,6 +43,7 @@ ws.add = function(name){ socket.on('disconnect', function(){ delete sockets[nick] delete room.users[nick] + ns.emit('parted', {nick:nick}) }) }) -- cgit v1.2.3-70-g09d2