Socket-io integration. Using a local socket.io.js file.

This commit is contained in:
Gustavo Cortez 2014-04-17 00:36:08 -03:00
parent 8f15578bb4
commit 4865513c21
5 changed files with 3405 additions and 3 deletions

3
.gitignore vendored
View File

@ -45,6 +45,7 @@ public/css/main.css
README.html
lib
lib/*
!lib/socket.io.js
js/copayBundle.js

View File

@ -271,15 +271,16 @@
<script src="lib/peerjs/peer.js"></script>
<script src="lib/bitcore.js"></script>
<script src="lib/crypto-js/rollups/aes.js"></script>
<script src="lib/socket.io.js"></script>
<script src="js/copayBundle.js"></script>
<script src="js/app.js"></script>
<script src="js/config.js"></script>
<script src="js/routes.js"></script>
<script src="js/directives.js"></script>
<script src="js/filters.js"></script>
<script src="js/services/network.js"></script>
<script src="js/services/socket.js"></script>
<script src="js/controllers/header.js"></script>
<script src="js/controllers/home.js"></script>

View File

@ -11,7 +11,8 @@ angular.module('copay',[
'copay.backup',
'copay.network',
'copay.signin',
'copay.peer'
'copay.peer',
'copay.socket'
]);
angular.module('copay.header', []);
@ -22,4 +23,5 @@ angular.module('copay.backup', []);
angular.module('copay.network', []);
angular.module('copay.signin', []);
angular.module('copay.peer', []);
angular.module('copay.socket', []);

71
js/services/socket.js Normal file
View File

@ -0,0 +1,71 @@
'use strict';
var ScopedSocket = function(socket, $rootScope) {
this.socket = socket;
this.$rootScope = $rootScope;
this.listeners = [];
};
ScopedSocket.prototype.removeAllListeners = function(opts) {
if (!opts) opts = {};
for (var i = 0; i < this.listeners.length; i++) {
var details = this.listeners[i];
if (opts.skipConnect && details.event === 'connect') {
continue;
}
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('copay.socket').factory('Socket',
function($rootScope) {
var socket = io.connect('http://localhost:3001', {
'reconnect': true,
'reconnection delay': 500,
});
return function(scope) {
var scopedSocket = new ScopedSocket(socket, $rootScope);
scope.$on('$destroy', function() {
scopedSocket.removeAllListeners();
});
socket.on('connect', function() {
scopedSocket.removeAllListeners({
skipConnect: true
});
});
return scopedSocket;
};
});

3327
lib/socket.io.js Normal file

File diff suppressed because it is too large Load Diff