summaryrefslogtreecommitdiff
path: root/app.js
diff options
context:
space:
mode:
Diffstat (limited to 'app.js')
-rw-r--r--app.js59
1 files changed, 34 insertions, 25 deletions
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