From 17582670a7b5481dd19cd65fe940d4faaada4d18 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Fri, 18 Jan 2013 17:19:06 -0500 Subject: blur/focus stuff --- app.js | 59 ++++++++++++++++++++++++++++++++++------------------------- 1 file changed, 34 insertions(+), 25 deletions(-) (limited to 'app.js') diff --git a/app.js b/app.js index ea42ae8..3c69dc1 100644 --- a/app.js +++ b/app.js @@ -126,7 +126,15 @@ var userSchema = mongoose.Schema({ count: { type: Number, default: 0 } }); -var User = mongoose.model('User', userSchema); +var User = mongoose.model( 'User', userSchema ); +function updateTime ( user, now, connected ) { + var time = ( now - connected ) / 1000; + var newCount = user.count + time; + user.count = newCount; + user.save(function(err) { + if(err) { throw err; } + }); +} function getHighScores (callback) { return User.find({}).sort({ score: 'desc' }).limit(10).exec(callback); @@ -149,7 +157,10 @@ io.sockets.on('connection', function (socket) { count: users[i].count }); } - socket.emit('scores', scores) + socket.emit('scores', { + 'scores': scores, + 'users': users + }) }); userCount++; @@ -163,6 +174,7 @@ io.sockets.on('connection', function (socket) { User.findById(data.id, function(err, user){ if (err || ! user) return; + socket.user = user; socket.user_id = user.id; socket.connected = now; @@ -177,41 +189,38 @@ io.sockets.on('connection', function (socket) { io.sockets.emit('count', { users: users, - welcome: users[data.user], now: now }); }) }); socket.on('mouse', function(data){ - io.sockets.emit('mouse', data); + io.sockets.volatile.emit('mouse', data); + }); + + socket.on('blur', function(data){ + if (! socket.user) return; + var now = Date.now(); + updateTime(socket.user, now, socket.connected); + socket.connected = now; + io.sockets.emit('blur', data); }); + socket.on('focus', function(data){ + if (!socket.user) return; + var now = Date.now(); + socket.connected = now; + io.sockets.emit('focus', data); + }); + socket.on('disconnect', function(data){ userCount--; - var connected = socket.connected; + if (!socket.user) return; + var now = Date.now(); - console.log("<<<<<<<<<<<<<<<<<<<", socket.user_id, "disconnected") - if (!socket.user_id) return; - User.findById(socket.user_id, function(err, user){ - if (err) throw err; - if (!user) return; - var time = (now - connected) / 1000; - var newCount = user.count + time; - console.log("<<<<<<<<<<<<<<<<<<<", socket.user_id, "was on for", time, ", new count is ", newCount) - user.count = newCount; - user.save(function(err) { - if(err) { throw err; } - }) -/* - update({ id: socket.user_id }, { count: newCount }, function (err, numberAffected, raw) { - if (err) return; - console.log("<<<<<<<<<<<<<<<<<<< updated") - }); -*/ - }); + updateTime(socket.user, now, socket.connected); - delete users[socket.user_id]; + delete users[socket.user.id]; io.sockets.emit('count', { users: users, now: now -- cgit v1.2.3-70-g09d2