diff --git a/app/controllers/socket.js b/app/controllers/socket.js index 7bcad79..3be31a5 100644 --- a/app/controllers/socket.js +++ b/app/controllers/socket.js @@ -1,23 +1,31 @@ 'use strict'; // server-side socket behaviour - // io is a variable already taken in express var ios = null; module.exports.init = function(app, io_ext) { ios = io_ext; ios.set('log level', 1); // reduce logging - ios.sockets.on('connection', function() { + ios.sockets.on('connection', function(socket) { + socket.on('subscribe', function(topic) { + socket.join(topic); + if (topic !== 'inv') { + module.exports.broadcast_address_tx(topic, 'hello world'); + } + }); }); }; - module.exports.broadcast_tx = function(tx) { - ios.sockets.emit('tx', tx); + ios.sockets.in('inv').emit('tx', tx); }; - module.exports.broadcast_block = function(block) { - ios.sockets.emit('block', block); + ios.sockets.in('inv').emit('block', block); }; + +module.exports.broadcast_address_tx = function(address, tx) { + ios.sockets.in(address).emit('tx', tx); +}; + diff --git a/lib/PeerSync.js b/lib/PeerSync.js index 49526cf..9f5a106 100644 --- a/lib/PeerSync.js +++ b/lib/PeerSync.js @@ -15,7 +15,6 @@ function spec() { PeerSync.prototype.init = function(config, cb) { if (!config) config = {}; - var that = this; var network = config && (config.network || 'testnet'); diff --git a/public/js/controllers/address.js b/public/js/controllers/address.js index 926f3f8..afc5c91 100644 --- a/public/js/controllers/address.js +++ b/public/js/controllers/address.js @@ -1,6 +1,13 @@ 'use strict'; -angular.module('insight.address').controller('AddressController', ['$scope', '$routeParams', '$location', 'Global', 'Address', function ($scope, $routeParams, $location, Global, Address) { +angular.module('insight.address').controller('AddressController', + ['$scope', + '$routeParams', + '$location', + 'Global', + 'Address', + 'socket', + function ($scope, $routeParams, $location, Global, Address, socket) { $scope.global = Global; $scope.findOne = function() { @@ -10,6 +17,12 @@ angular.module('insight.address').controller('AddressController', ['$scope', '$r $scope.address = address; }); }; + socket.on('connect', function() { + socket.emit('subscribe', $routeParams.addrStr); + }); + socket.on('tx', function(data) { + console.log('Incoming message:', data); + }); $scope.params = $routeParams; }]); diff --git a/public/js/controllers/index.js b/public/js/controllers/index.js index 12eec9d..763f952 100755 --- a/public/js/controllers/index.js +++ b/public/js/controllers/index.js @@ -2,9 +2,18 @@ var TRANSACTION_DISPLAYED = 5; var BLOCKS_DISPLAYED = 5; -angular.module('insight.system').controller('IndexController', ['$scope', 'Global', 'socket', 'Blocks', 'Transactions', function($scope, Global, socket, Blocks, Transactions) { +angular.module('insight.system').controller('IndexController', + ['$scope', + 'Global', + 'socket', + 'Blocks', + 'Transactions', + function($scope, Global, socket, Blocks, Transactions) { $scope.global = Global; + socket.on('connect', function() { + socket.emit('subscribe', 'inv'); + }); socket.on('tx', function(tx) { console.log('Transaction received! ' + JSON.stringify(tx)); if ($scope.txs.length === TRANSACTION_DISPLAYED) { @@ -15,9 +24,9 @@ angular.module('insight.system').controller('IndexController', ['$scope', 'Globa socket.on('block', function(block) { console.log('Block received! ' + JSON.stringify(block)); - if ($scope.blocks.length === BLOCKS_DISPLAYED) { - $scope.blocks.pop(); - } + if ($scope.blocks.length === BLOCKS_DISPLAYED) { + $scope.blocks.pop(); + } $scope.blocks.unshift(block); });