diff --git a/js/models/core/WalletFactory.js b/js/models/core/WalletFactory.js index 909fba68f..945a61fdf 100644 --- a/js/models/core/WalletFactory.js +++ b/js/models/core/WalletFactory.js @@ -5,7 +5,7 @@ var PublicKeyRing = require('./PublicKeyRing'); var PrivateKey = require('./PrivateKey'); var Wallet = require('./Wallet'); -var WebRTC = module.exports.WebRTC = require('../network/WebRTC'); +var Async = module.exports.Async = require('../network/Async'); var Insight = module.exports.Insight = require('../blockchain/Insight'); var StorageLocalEncrypted = module.exports.StorageLocalEncrypted = require('../storage/LocalEncrypted'); @@ -19,7 +19,7 @@ function WalletFactory(config, version) { config = config || {}; this.Storage = config.Storage || StorageLocalEncrypted; - this.Network = config.Network || WebRTC; + this.Network = config.Network || Async; this.Blockchain = config.Blockchain || Insight; this.storage = new this.Storage(config.storage); diff --git a/js/models/network/Async.js b/js/models/network/Async.js index d7cf029a4..9d17c621f 100644 --- a/js/models/network/Async.js +++ b/js/models/network/Async.js @@ -7,6 +7,7 @@ var AuthMessage = bitcore.AuthMessage; var util = bitcore.util; var extend = require('util')._extend; var io = require('socket.io-client'); +var preconditions = require('preconditions').singleton(); /* * Emits @@ -26,8 +27,6 @@ function Network(opts) { opts = opts || {}; this.host = opts.host || 'localhost'; this.port = opts.port || 3001; - this.retryDelay = opts.retryDelay || 3000; - this.reconnectAttempts = opts.reconnectAttempts || 3; this.cleanUp(); } @@ -46,7 +45,6 @@ Network.prototype.cleanUp = function() { this.connections = {}; this.criticalErr = ''; this.closing = 0; - this.tries = 0; this.removeAllListeners(); }; @@ -232,7 +230,7 @@ Network.prototype._onMessage = function(enc) { this._onClose(peerId); break; default: - this.emit('data', self.copayerForPeer[peerId], payload, isInbound); + this.emit('data', self.copayerForPeer[peerId], payload); } }; @@ -314,38 +312,22 @@ Network.prototype.start = function(opts, openCallback) { if (!this.copayerId) this.setCopayerId(opts.copayerId); - var self = this; - var setupPeer = function() { - if (self.connectedPeers.length > 0) return; // Already connected! - if (self.socket) { - self.socket.destroy(); - self.socket.removeAllListeners(); - } - - if (!self.criticalError && self.tries < self.reconnectAttempts) { - self.tries++; - self.opts.token = util.sha256(self.peerId).toString('hex'); - self.socket = io.connect(self.host, { - port: self.port - }); - self.socket.emit('subscribe', pubkey); - self.socket.emit('sync', ts); - self.started = true; - self._setupConnectionHandlers(self.socket, copayerId); - - setTimeout(setupPeer, self.retryDelay); // Schedule retry - return; - } - if (self.criticalError && self.criticalError.match(/taken/)) { - self.criticalError = ' Looks like you are already connected to this wallet please close all other Copay Wallets ' - } - - self.emit('serverError', self.criticalError); - self.cleanUp(); + if (this.connectedPeers.length > 0) return; // Already connected! + if (this.socket) { + this.socket.destroy(); + this.socket.removeAllListeners(); } - this.tries = 0; - setupPeer(); + this.socket = io.connect(this.host, { + port: this.port + }); + this.socket.emit('subscribe', this.getKey().public.toString('hex')); + this.socket.emit('sync'); + this.started = true; + this._setupConnectionHandlers(this.socket); + + //this.emit('serverError', self.criticalError); + }; Network.prototype.getOnlinePeerIDs = function() { diff --git a/test/test.network.Async.js b/test/test.network.Async.js index 2c3839e70..3f674c3ff 100644 --- a/test/test.network.Async.js +++ b/test/test.network.Async.js @@ -54,105 +54,6 @@ describe('Network / Async', function() { }); - describe('#_setupPeerHandlers', function() { - var n = new Async(); - n.peer = {}; - var spy = n.peer.on = sinon.spy(); - it('should setup handlers', function() { - n._setupPeerHandlers(); - spy.calledWith('connection').should.equal(true); - spy.calledWith('open').should.equal(true); - spy.calledWith('error').should.equal(true); - }); - }); - - describe('#_handlePeerOpen', function() { - var n = new Async(); - it('should call openCallback handler', function(done) { - n.peerId = 1; - n.copayerId = 2; - n._handlePeerOpen(function() { - n.connectedPeers.should.deep.equal([1]); - n.copayerForPeer.should.deep.equal({ - 1: 2 - }); - done(); - }); - }); - }); - - describe('#_handlePeerError', function() { - var log = console.log; - var n = new Async(); - it('should call _checkAnyPeer on could not connect error', function() { - var save = n._checkAnyPeer; - var spy = n._checkAnyPeer = sinon.spy(); - var logSpy = console.log = sinon.spy(); - n._handlePeerError({ - message: 'Could not connect to peer xxx' - }); - console.log = log; - spy.called.should.equal(true); - logSpy.called.should.equal(true); - n._checkAnyPeer = save; - }); - - it('should call not call _checkAnyPeer other error', function() { - var save = n._checkAnyPeer; - var spy = n._checkAnyPeer = sinon.spy(); - var otherMessage = 'Could connect to peer xxx'; - var logSpy = console.log = sinon.spy(); - n._handlePeerError({ - message: otherMessage, - }); - console.log = log; - spy.called.should.equal(false); - n.criticalError.should.equal(otherMessage); - logSpy.called.should.equal(true); - n._checkAnyPeer = save; - }); - - }); - - - - describe('#_encode', function() { - - it('should encode data successfully', function() { - var n = new Async(); - var data = new bitcore.Buffer('my data to encode'); - var privkeystr = new bitcore.Buffer('test privkey'); - var privkey = bitcore.util.sha256(privkeystr); - var key = new bitcore.Key(); - key.private = privkey; - key.regenerateSync(); - var encoded = n._encode(key.public, key, data); - should.exist(encoded); - encoded.sig.length.should.not.equal(0); - encoded.pubkey.length.should.not.equal(0); - encoded.encrypted.length.should.not.equal(0); - }); - - }); - - describe('#_decode', function() { - - it('should decode that which was encoded', function() { - var n = new Async(); - var data = new bitcore.Buffer('my data to encrypt'); - var privkeystr = new bitcore.Buffer('test privkey'); - var privkey = bitcore.util.sha256(privkeystr); - var key = new bitcore.Key(); - key.private = privkey; - key.regenerateSync(); - var encoded = n._encode(key.public, key, data); - var decoded = n._decode(key, encoded); - encoded.sig.should.not.equal(0); - decoded.payload.toString().should.equal('my data to encrypt'); - }); - - }); - describe('#send', function() { it('should call _sendToOne for a copayer', function(done) {