summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--public/js/lib/views/room/chat.js2
-rw-r--r--public/js/lib/views/room/room.js19
-rw-r--r--public/js/lib/views/room/userlist.js20
-rw-r--r--server/ws.js8
4 files changed, 31 insertions, 18 deletions
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})
})
})