2014-08-20 09:05:27 -07:00
|
|
|
var microtime = require('microtime');
|
2014-08-20 09:21:58 -07:00
|
|
|
var mdb = require('../../lib/MessageDb').default();
|
|
|
|
|
|
|
|
|
|
|
|
module.exports.init = function(ios, config) {
|
|
|
|
|
|
|
|
ios.sockets.on('connection', function(socket) {
|
|
|
|
// when it requests sync, send him all pending messages
|
|
|
|
socket.on('sync', function(ts) {
|
|
|
|
log('Sync requested by ' + socket.id);
|
|
|
|
log(' from timestamp ' + ts);
|
|
|
|
var rooms = socket.rooms;
|
|
|
|
if (rooms.length !== 2) {
|
|
|
|
socket.emit('insight-error', 'Must subscribe with public key before syncing');
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
var to = rooms[1];
|
|
|
|
var upper_ts = Math.round(microtime.now());
|
|
|
|
log(' to timestamp ' + upper_ts);
|
|
|
|
mdb.getMessages(to, ts, upper_ts, function(err, messages) {
|
|
|
|
if (err) {
|
|
|
|
throw new Error('Couldn\'t get messages on sync request: ' + err);
|
|
|
|
}
|
|
|
|
log('\tFound ' + messages.length + ' message' + (messages.length !== 1 ? 's' : ''));
|
|
|
|
for (var i = 0; i < messages.length; i++) {
|
|
|
|
broadcastMessage(messages[i], socket);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
// when it sends a message, add it to db
|
|
|
|
socket.on('message', function(m) {
|
|
|
|
log('Message sent from ' + m.pubkey + ' to ' + m.to);
|
|
|
|
mdb.addMessage(m, function(err) {
|
|
|
|
if (err) {
|
|
|
|
throw new Error('Couldn\'t add message to database: ' + err);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// disconnect handler
|
|
|
|
socket.on('disconnect', function() {
|
|
|
|
log('disconnected ' + socket.id);
|
|
|
|
});
|
|
|
|
|
|
|
|
mdb.on('message', broadcastMessage);
|
|
|
|
// when it requests sync, send him all pending messages
|
|
|
|
socket.on('sync', function(ts) {
|
|
|
|
log('Sync requested by ' + socket.id);
|
|
|
|
log(' from timestamp ' + ts);
|
|
|
|
var rooms = socket.rooms;
|
|
|
|
if (rooms.length !== 2) {
|
|
|
|
socket.emit('insight-error', 'Must subscribe with public key before syncing');
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
var to = rooms[1];
|
|
|
|
var upper_ts = Math.round(microtime.now());
|
|
|
|
log(' to timestamp ' + upper_ts);
|
|
|
|
mdb.getMessages(to, ts, upper_ts, function(err, messages) {
|
|
|
|
if (err) {
|
|
|
|
throw new Error('Couldn\'t get messages on sync request: ' + err);
|
|
|
|
}
|
|
|
|
log('\tFound ' + messages.length + ' message' + (messages.length !== 1 ? 's' : ''));
|
|
|
|
for (var i = 0; i < messages.length; i++) {
|
|
|
|
broadcastMessage(messages[i], socket);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
// when it sends a message, add it to db
|
|
|
|
socket.on('message', function(m) {
|
|
|
|
log('Message sent from ' + m.pubkey + ' to ' + m.to);
|
|
|
|
mdb.addMessage(m, function(err) {
|
|
|
|
if (err) {
|
|
|
|
throw new Error('Couldn\'t add message to database: ' + err);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// disconnect handler
|
|
|
|
socket.on('disconnect', function() {
|
|
|
|
log('disconnected ' + socket.id);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
mdb.on('message', broadcastMessage);
|
|
|
|
|
|
|
|
};
|