|
|
@ -23,16 +23,38 @@ WsApp._unauthorized = function() { |
|
|
|
socket.disconnect(); |
|
|
|
}; |
|
|
|
|
|
|
|
WsApp.subscribeAddresses = function(walletId, addresses) { |
|
|
|
console.log('*** [wsapp.js ln27] subscribing:', addresses, walletId); // TODO
|
|
|
|
|
|
|
|
_.each([].concat(addresses), function(address) { |
|
|
|
subscriptions[address] = walletId; |
|
|
|
}); |
|
|
|
}; |
|
|
|
|
|
|
|
WsApp.subscribeWallet = function(serviceInstance) { |
|
|
|
// TODO: optimize!
|
|
|
|
serviceInstance.getMainAddresses({}, function(err, addresses) { |
|
|
|
if (err) { |
|
|
|
log.warn('Could not subscribe to addresses for wallet ' + serviceInstance.walletId); |
|
|
|
return; |
|
|
|
} |
|
|
|
WsApp.subscribeAddress(_.pluck(addresses, 'address'), serviceInstance.walletId); |
|
|
|
}); |
|
|
|
}; |
|
|
|
|
|
|
|
WsApp.start = function(server) { |
|
|
|
var self = this; |
|
|
|
|
|
|
|
var io = require('socket.io')(server); |
|
|
|
|
|
|
|
WalletService.onNotification(function(serviceInstance, args) { |
|
|
|
var room = serviceInstance.walletId || args.walletId; |
|
|
|
if (room) { |
|
|
|
io.to(room).emit('notification', args); |
|
|
|
var walletId = serviceInstance.walletId || args.walletId; |
|
|
|
if (!walletId) return; |
|
|
|
|
|
|
|
if (args.type == 'NewAddress') { |
|
|
|
WsApp.subscribeAddress(walletId, args.address); |
|
|
|
} |
|
|
|
io.to(walletId).emit('notification', args); |
|
|
|
}); |
|
|
|
|
|
|
|
io.on('connection', function(socket) { |
|
|
@ -47,6 +69,8 @@ WsApp.start = function(server) { |
|
|
|
|
|
|
|
socket.join(res.walletId); |
|
|
|
socket.emit('authorized'); |
|
|
|
|
|
|
|
WsApp.subscribeWallet(res); |
|
|
|
}); |
|
|
|
}); |
|
|
|
}); |
|
|
|