UNPKG

lpio

Version:

The last dashboard app you'll ever need

53 lines (41 loc) 1.59 kB
var _ = require('underscore'); var Q = require('q'); var log = require('./log'); exports.start = function start(io,socket) { log.info("Socket "+socket.id+" Connected"); socket.on('registerDataIds', function (data) { if(_.isArray(data.dataIds)){ log.info("joining "+data.dataIds.length+" rooms by "+socket.id); var rooms = socket.rooms; var new_rooms = data.dataIds; new_rooms.push(socket.id); var q_all = []; _.difference(rooms,new_rooms).forEach( function(room){ log.info("leaving: " + room + " by: "+socket.id); socket.leave(room); }); _.difference(new_rooms,rooms).forEach( function(key, index){ var widget = data.dataIds[index]; var defer = Q.defer(); q_all.push(defer.promise); socket.join(key,function(err){ if(err){ defer.reject(err); return log.error(err,"Error joining room "+key); } log.info("joining: " + key); defer.resolve(true); // @TODO: get from cache io.to(socket.id).emit('update',{}); }); }); // data.widgets.every Q.all(q_all) .catch(function(err){ log.error(err); }); } }); socket.on('disconnect', function () { log.info("Socket "+socket.id+" Disconnected"); }); }