diff options
| author | Jules Laplace <jules@okfoc.us> | 2013-01-18 13:47:52 -0500 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2013-01-18 13:47:52 -0500 |
| commit | 9a0cf288b2e37d582df44356bb9e015981a124d4 (patch) | |
| tree | 84055dbc026b2778386d1ffa9f24c3537e7adc9c /app.js | |
| parent | b41fadbc5d9ead132a5d2e081cd18ce1972a7c4f (diff) | |
updating score and stuff
Diffstat (limited to 'app.js')
| -rw-r--r-- | app.js | 124 |
1 files changed, 84 insertions, 40 deletions
@@ -127,52 +127,96 @@ var userSchema = mongoose.Schema({ }); var User = mongoose.model('User', userSchema); + +function getHighScores (callback) { + return User.find({}).sort({ score: 'desc' }).limit(10).exec(callback); +} + var io = require("socket.io").listen(server), userCount = 0, users = {}, timeout; +timeout = setInterval(function(){ + io.sockets.emit('update', { 'now': Date.now() }); +}, 1000); + io.sockets.on('connection', function (socket) { - userCount++; - socket.emit('news', { hello: 'world' }); - io.sockets.emit('count', { - number: userCount - }); - socket.on('current', function(data){ - var json; - try { - json = JSON.parse(data); - } catch(SyntaxError) { - console.log('Invalid JSON: ') - console.log(data) - return false; - } - var now = Date.now() - users[json.user] = now; - socket.user = json.user; - socket.connected = now; - }); + getHighScores(function(err, users) { + scores = []; + for (var i = 0; i < users.length; i++) { + scores.unshift({ + firstname: users[i].firstname, + lastname: users[i].lastname, + count: users[i].count + }); + } + socket.emit('scores', scores) + }); - timeout = setInterval(function(){ - io.sockets.emit('update', users); - }, 1000); + userCount++; - socket.on('disconnect', function(data){ - // decrement the usercount - userCount--; - User.findById(socket.user, function(err, user){ - if (err) throw err; - if (!user) return; - var count = user.count; - var time = (Date.now() - socket.connected) / 1000; - var newCount = count + time; - User.update({ id: count.id }, { count: newCount }, function (err, numberAffected, raw) { - if (err) return handleError(err); - }); - }); - delete users[data.user]; - io.sockets.emit('count', { - number: userCount - }); + socket.on('joined', function(data){ + var now = Date.now(); + try { + data = JSON.parse(data); + } + catch (e) { return; } + User.findById(data.id, function(err, user){ + if (err || ! user) return; + + socket.user_id = user.id; + socket.connected = now; - }); + users[user.id] = { + id: user.id, + firstname: user.firstname, + lastname: user.lastname, + image: user.image, + count: user.count, + connected: now + }; + + io.sockets.emit('count', { + users: users, + welcome: users[data.user], + now: now + }); + }) + }); + + socket.on('mouse', function(data){ + io.sockets.emit('mouse', data); + }); + + socket.on('disconnect', function(data){ + userCount--; + var connected = socket.connected; + 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") + }); +*/ + }); + + delete users[socket.user_id]; + io.sockets.emit('count', { + users: users, + now: now + }); + + }); }); |
