From 8588c56b612d37aecd1fbaf77b2fa2f9c05b40d2 Mon Sep 17 00:00:00 2001 From: Dan Janosik Date: Mon, 24 Sep 2018 19:22:05 -0400 Subject: [PATCH] tweaking electrum connection logic to try to deal with disconnect errors --- app.js | 2 +- app/api/electrumApi.js | 26 +++++++++++++++++++++++--- package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/app.js b/app.js index aebcca9..89cf9ae 100755 --- a/app.js +++ b/app.js @@ -131,7 +131,7 @@ app.runOnStartup = function() { if (config.electrumXServers && config.electrumXServers.length > 0) { electrumApi.connectToServers().then(function() { - console.log("Live with ElectrumX API"); + console.log("Live with ElectrumX API."); global.electrumApi = electrumApi; diff --git a/app/api/electrumApi.js b/app/api/electrumApi.js index 0e5eef4..c47b26e 100644 --- a/app/api/electrumApi.js +++ b/app/api/electrumApi.js @@ -27,6 +27,27 @@ function connectToServers() { }); } +function reconnectToServers() { + return new Promise(function(resolve, reject) { + for (var i = 0; i < electrumClients.length; i++) { + electrumClients[i].close(); + } + + electrumClients = []; + + console.log("Reconnecting ElectrumX sockets..."); + + connectToServers().catch(function(err) { + console.log("Error 317fh29y7fg3333: " + err); + + }).finally(function() { + console.log("Done reconnecting ElectrumX sockets."); + + resolve(); + }); + }); +} + function connectToServer(host, port) { return new Promise(function(resolve, reject) { console.log("Connecting to ElectrumX Server: " + host + ":" + port); @@ -54,11 +75,9 @@ function runOnServer(electrumClient, f) { resolve({result:result, server:electrumClient.host}); }).catch(function(err) { - console.log("Error dif0e21qdh: " + JSON.stringify(err) + ", host=" + electrumClient.host + ", port=" + electrumClient.port); + console.log("Error dif0e21qdh: " + err + ", host=" + electrumClient.host + ", port=" + electrumClient.port); reject(err); - - electrumClient.reconnect(); }); }); } @@ -148,6 +167,7 @@ function getAddressBalance(addrScripthash) { module.exports = { connectToServers: connectToServers, + reconnectToServers: reconnectToServers, getAddressTxids: getAddressTxids, getAddressBalance: getAddressBalance }; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index d13ae25..98b8652 100644 --- a/package-lock.json +++ b/package-lock.json @@ -691,8 +691,8 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electrum-client": { - "version": "github:Monaize/node-electrum-client#7eaa018b63a9d14aad12cf51e84693a31f2cc12c", - "from": "github:Monaize/node-electrum-client#7eaa018b63a9" + "version": "github:chaintools/node-electrum-client#90e533753eeb13a403f87cb7b4e46647553856dc", + "from": "github:chaintools/node-electrum-client#90e533753" }, "encodeurl": { "version": "1.0.2", diff --git a/package.json b/package.json index f1a042e..4197979 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "crypto-js": "3.1.9-1", "debug": "~2.6.0", "decimal.js": "7.2.3", - "electrum-client": "Monaize/node-electrum-client#7eaa018b63a9", + "electrum-client": "chaintools/node-electrum-client#90e533753", "express": "~4.16.3", "express-session": "1.15.6", "jstransformer-markdown-it": "^2.0.0",