From 3fe2aaa8282b56e188710cb17345d5aff4d1b5ae Mon Sep 17 00:00:00 2001 From: Ivan Socolsky Date: Mon, 30 Mar 2015 12:40:58 -0300 Subject: [PATCH] subscribe addresses --- lib/wsapp.js | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/lib/wsapp.js b/lib/wsapp.js index 8196e03..597fb8d 100644 --- a/lib/wsapp.js +++ b/lib/wsapp.js @@ -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); }); }); });