socket.io and angular proper integration
This commit is contained in:
parent
b7d3666249
commit
cf5aea1165
|
@ -9,6 +9,7 @@ module.exports.init = function(app, io_ext) {
|
|||
ios.set('log level', 1); // reduce logging
|
||||
ios.sockets.on('connection', function(socket) {
|
||||
socket.on('subscribe', function(topic) {
|
||||
console.log('subscribe to '+topic);
|
||||
socket.join(topic);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -7,8 +7,8 @@ angular.module('insight.address').controller('AddressController',
|
|||
'$location',
|
||||
'Global',
|
||||
'Address',
|
||||
'socket',
|
||||
function ($scope, $rootScope, $routeParams, $location, Global, Address, socket) {
|
||||
'get_socket',
|
||||
function ($scope, $rootScope, $routeParams, $location, Global, Address, get_socket) {
|
||||
$scope.global = Global;
|
||||
|
||||
$scope.findOne = function() {
|
||||
|
@ -21,9 +21,8 @@ angular.module('insight.address').controller('AddressController',
|
|||
$location.path('/');
|
||||
});
|
||||
};
|
||||
socket.on('connect', function() {
|
||||
socket.emit('subscribe', $routeParams.addrStr);
|
||||
});
|
||||
var socket = get_socket($scope);
|
||||
socket.emit('subscribe', $routeParams.addrStr);
|
||||
|
||||
$scope.params = $routeParams;
|
||||
}]);
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
'use strict';
|
||||
|
||||
angular.module('insight.system').controller('FooterController', ['$scope', 'Global', 'socket', 'Status', function ($scope, Global, socket, Status) {
|
||||
angular.module('insight.system').controller('FooterController',
|
||||
['$scope',
|
||||
'Global',
|
||||
'Status',
|
||||
function ($scope, Global, Status) {
|
||||
$scope.global = Global;
|
||||
|
||||
socket.on('block', function(block) {
|
||||
console.log('[footer.js:14]',block); //TODO
|
||||
console.log('Block received! ' + JSON.stringify(block));
|
||||
});
|
||||
|
||||
$scope.getFooter = function() {
|
||||
Status.get({
|
||||
q: 'getInfo'
|
||||
|
|
|
@ -6,15 +6,14 @@ angular.module('insight.system').controller('IndexController',
|
|||
['$scope',
|
||||
'$rootScope',
|
||||
'Global',
|
||||
'socket',
|
||||
'get_socket',
|
||||
'Blocks',
|
||||
'Transactions',
|
||||
function($scope, $rootScope, Global, socket, Blocks, Transactions) {
|
||||
function($scope, $rootScope, Global, get_socket, Blocks, Transactions) {
|
||||
$scope.global = Global;
|
||||
|
||||
socket.on('connect', function() {
|
||||
socket.emit('subscribe', 'inv');
|
||||
});
|
||||
var socket = get_socket($scope);
|
||||
socket.emit('subscribe', 'inv');
|
||||
|
||||
//show errors
|
||||
$scope.flashMessage = $rootScope.flashMessage || null;
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
angular.module('insight.transactions').controller('transactionsController',
|
||||
['$scope',
|
||||
'$rootScope',
|
||||
'$routeParams',
|
||||
'$location',
|
||||
'Global',
|
||||
'Transaction',
|
||||
'TransactionsByBlock',
|
||||
'TransactionsByAddress',
|
||||
'socket',
|
||||
function ($scope, $routeParams, $location, Global, Transaction, TransactionsByBlock, TransactionsByAddress, socket) {
|
||||
function ($scope, $rootScope, $routeParams, $location, Global, Transaction, TransactionsByBlock, TransactionsByAddress) {
|
||||
$scope.global = Global;
|
||||
|
||||
$scope.findThis = function() {
|
||||
|
@ -43,10 +43,10 @@ angular.module('insight.transactions').controller('transactionsController',
|
|||
$scope.txs = txs;
|
||||
});
|
||||
};
|
||||
socket.on('tx', function(tx) {
|
||||
/*socket.on('tx', function(tx) {
|
||||
console.log('Incoming message for new transaction!', tx);
|
||||
$scope.findTx(tx.txid);
|
||||
});
|
||||
});*/
|
||||
|
||||
$scope.txs = [];
|
||||
|
||||
|
|
|
@ -1,26 +1,62 @@
|
|||
'use strict';
|
||||
|
||||
angular.module('insight.socket').factory('socket', ['$rootScope', function($rootScope) {
|
||||
var socket = io.connect();
|
||||
return {
|
||||
on: function(eventName, callback) {
|
||||
socket.on(eventName, function() {
|
||||
var args = arguments;
|
||||
$rootScope.$apply(function() {
|
||||
callback.apply(socket, args);
|
||||
});
|
||||
});
|
||||
},
|
||||
emit: function(eventName, data, callback) {
|
||||
socket.emit(eventName, data, function() {
|
||||
var args = arguments;
|
||||
$rootScope.$apply(function() {
|
||||
if (callback) {
|
||||
callback.apply(socket, args);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
var ScopedSocket = function(socket, $rootScope) {
|
||||
this.socket = socket;
|
||||
this.$rootScope = $rootScope;
|
||||
this.listeners = [];
|
||||
};
|
||||
|
||||
ScopedSocket.prototype.removeAllListeners = function() {
|
||||
console.log('remove all listeners');
|
||||
for (var i = 0; i < this.listeners.length; i++) {
|
||||
var details = this.listeners[i];
|
||||
console.log('removing listener '+i);
|
||||
this.socket.removeListener(details.event, details.fn);
|
||||
}
|
||||
this.listeners = [];
|
||||
};
|
||||
|
||||
ScopedSocket.prototype.on = function(event, callback) {
|
||||
var socket = this.socket;
|
||||
var $rootScope = this.$rootScope;
|
||||
|
||||
|
||||
var wrapped_callback = function() {
|
||||
var args = arguments;
|
||||
$rootScope.$apply(function() {
|
||||
callback.apply(socket, args);
|
||||
});
|
||||
};
|
||||
socket.on(event, wrapped_callback);
|
||||
|
||||
this.listeners.push({
|
||||
event: event,
|
||||
fn: wrapped_callback
|
||||
});
|
||||
};
|
||||
|
||||
ScopedSocket.prototype.emit = function(event, data, callback) {
|
||||
var socket = this.socket;
|
||||
var $rootScope = this.$rootScope;
|
||||
|
||||
socket.emit(event, data, function() {
|
||||
var args = arguments;
|
||||
$rootScope.$apply(function() {
|
||||
if (callback) {
|
||||
callback.apply(socket, args);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
angular.module('insight.socket').factory('get_socket', ['$rootScope', function($rootScope) {
|
||||
var socket = io.connect();
|
||||
return function(scope) {
|
||||
var scopedSocket = new ScopedSocket(socket, $rootScope);
|
||||
scope.$on('$destroy', function() {
|
||||
scopedSocket.removeAllListeners();
|
||||
});
|
||||
return scopedSocket;
|
||||
};
|
||||
}]);
|
||||
|
||||
|
|
Loading…
Reference in New Issue