Socket-io integration. Using a local socket.io.js file.
This commit is contained in:
parent
8f15578bb4
commit
4865513c21
5 changed files with 3405 additions and 3 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -45,6 +45,7 @@ public/css/main.css
|
||||||
|
|
||||||
README.html
|
README.html
|
||||||
|
|
||||||
lib
|
lib/*
|
||||||
|
!lib/socket.io.js
|
||||||
|
|
||||||
js/copayBundle.js
|
js/copayBundle.js
|
||||||
|
|
|
||||||
|
|
@ -271,15 +271,16 @@
|
||||||
<script src="lib/peerjs/peer.js"></script>
|
<script src="lib/peerjs/peer.js"></script>
|
||||||
<script src="lib/bitcore.js"></script>
|
<script src="lib/bitcore.js"></script>
|
||||||
<script src="lib/crypto-js/rollups/aes.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/copayBundle.js"></script>
|
||||||
|
|
||||||
|
|
||||||
<script src="js/app.js"></script>
|
<script src="js/app.js"></script>
|
||||||
<script src="js/config.js"></script>
|
<script src="js/config.js"></script>
|
||||||
<script src="js/routes.js"></script>
|
<script src="js/routes.js"></script>
|
||||||
<script src="js/directives.js"></script>
|
<script src="js/directives.js"></script>
|
||||||
<script src="js/filters.js"></script>
|
<script src="js/filters.js"></script>
|
||||||
<script src="js/services/network.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/header.js"></script>
|
||||||
<script src="js/controllers/home.js"></script>
|
<script src="js/controllers/home.js"></script>
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,8 @@ angular.module('copay',[
|
||||||
'copay.backup',
|
'copay.backup',
|
||||||
'copay.network',
|
'copay.network',
|
||||||
'copay.signin',
|
'copay.signin',
|
||||||
'copay.peer'
|
'copay.peer',
|
||||||
|
'copay.socket'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
angular.module('copay.header', []);
|
angular.module('copay.header', []);
|
||||||
|
|
@ -22,4 +23,5 @@ angular.module('copay.backup', []);
|
||||||
angular.module('copay.network', []);
|
angular.module('copay.network', []);
|
||||||
angular.module('copay.signin', []);
|
angular.module('copay.signin', []);
|
||||||
angular.module('copay.peer', []);
|
angular.module('copay.peer', []);
|
||||||
|
angular.module('copay.socket', []);
|
||||||
|
|
||||||
|
|
|
||||||
71
js/services/socket.js
Normal file
71
js/services/socket.js
Normal 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
3327
lib/socket.io.js
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue