summaryrefslogtreecommitdiff
path: root/app.js
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2013-01-18 13:47:52 -0500
committerJules Laplace <jules@okfoc.us>2013-01-18 13:47:52 -0500
commit9a0cf288b2e37d582df44356bb9e015981a124d4 (patch)
tree84055dbc026b2778386d1ffa9f24c3537e7adc9c /app.js
parentb41fadbc5d9ead132a5d2e081cd18ce1972a7c4f (diff)
updating score and stuff
Diffstat (limited to 'app.js')
-rw-r--r--app.js124
1 files changed, 84 insertions, 40 deletions
diff --git a/app.js b/app.js
index 6391c73..ea42ae8 100644
--- a/app.js
+++ b/app.js
@@ -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
+ });
+
+ });
});