From 2c879a60c907e77accb4a99e0d1facaa46cd6001 Mon Sep 17 00:00:00 2001 From: Alexandre ABRIOUX Date: Wed, 1 Dec 2021 10:31:44 +0100 Subject: [PATCH] feat(request-node): allow ws connection (#691) --- packages/request-node/package.json | 1 + packages/request-node/src/storageUtils.ts | 27 ++++++++++++++-- yarn.lock | 38 +++++++++++++++++++++++ 3 files changed, 64 insertions(+), 2 deletions(-) diff --git a/packages/request-node/package.json b/packages/request-node/package.json index 01a18b1057..97a9c6873f 100644 --- a/packages/request-node/package.json +++ b/packages/request-node/package.json @@ -55,6 +55,7 @@ "keyv-file": "0.2.0", "shelljs": "0.8.4", "tslib": "2.3.1", + "web3-providers-ws": "1.6.1", "yargs": "16.2.0" }, "devDependencies": { diff --git a/packages/request-node/src/storageUtils.ts b/packages/request-node/src/storageUtils.ts index 324f824463..8c6d6b6c3c 100644 --- a/packages/request-node/src/storageUtils.ts +++ b/packages/request-node/src/storageUtils.ts @@ -5,7 +5,8 @@ import * as config from './config'; import Keyv from 'keyv'; import KeyvFile from 'keyv-file'; -import hdWalletProvider from '@truffle/hdwallet-provider'; +import Web3WsProvider from 'web3-providers-ws'; +import HDWalletProvider from '@truffle/hdwallet-provider'; /** * Get the ethereum storage with values from config @@ -28,7 +29,29 @@ export function getEthereumStorage( }; // Initializes web3 connection object - const provider = new hdWalletProvider(mnemonic, config.getStorageWeb3ProviderUrl()); + let provider: HDWalletProvider; + if (config.getStorageWeb3ProviderUrl().match('^wss?://.+')) { + provider = new HDWalletProvider({ + mnemonic, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + providerOrUrl: new Web3WsProvider(config.getStorageWeb3ProviderUrl(), { + clientConfig: { + keepalive: true, + keepaliveInterval: 10000, // ms + }, + // Enable auto reconnection + reconnect: { + auto: true, + delay: 3000, // ms + maxAttempts: 5, + onTimeout: false, + }, + }), + }); + } else { + provider = new HDWalletProvider(mnemonic, config.getStorageWeb3ProviderUrl()); + } const web3Connection: StorageTypes.IWeb3Connection = { networkId: config.getStorageNetworkId(), diff --git a/yarn.lock b/yarn.lock index e72d831d22..8d5d991df9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -25456,6 +25456,14 @@ web3-core-helpers@1.3.6: web3-eth-iban "1.3.6" web3-utils "1.3.6" +web3-core-helpers@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.6.1.tgz#cb21047306871f4cf0fedfece7d47ea2aa96141b" + integrity sha512-om2PZvK1uoWcgMq6JfcSx3241LEIVF6qi2JuHz2SLKiKEW5UsBUaVx0mNCmcZaiuYQCyOsLS3r33q5AdM+v8ng== + dependencies: + web3-eth-iban "1.6.1" + web3-utils "1.6.1" + web3-core-method@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.1.tgz#9df1bafa2cd8be9d9937e01c6a47fc768d15d90a" @@ -26033,6 +26041,14 @@ web3-eth-iban@1.3.6: bn.js "^4.11.9" web3-utils "1.3.6" +web3-eth-iban@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.6.1.tgz#20bbed75723e3e9ff98e624979629d26329462b6" + integrity sha512-91H0jXZnWlOoXmc13O9NuQzcjThnWyAHyDn5Yf7u6mmKOhpJSGF/OHlkbpXt1Y4v2eJdEPaVFa+6i8aRyagE7Q== + dependencies: + bn.js "^4.11.9" + web3-utils "1.6.1" + web3-eth-personal@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.1.tgz#244e9911b7b482dc17c02f23a061a627c6e47faf" @@ -26392,6 +26408,15 @@ web3-providers-ws@1.3.6: web3-core-helpers "1.3.6" websocket "^1.0.32" +web3-providers-ws@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.6.1.tgz#f7ee71f158971102b865e99ea7911f483e0507e9" + integrity sha512-FWMEFYb4rYFYRgSFBf/O1Ex4p/YKSlN+JydCtdlJwRimd89qm95CTfs4xGjCskwvXMjV2sarH+f1NPwJXicYpg== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.6.1" + websocket "^1.0.32" + web3-shh@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.1.tgz#4460e3c1e07faf73ddec24ccd00da46f89152b0c" @@ -26501,6 +26526,19 @@ web3-utils@1.3.6: underscore "1.12.1" utf8 "3.0.0" +web3-utils@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.6.1.tgz#befcb23922b00603ab56d8c5b4158468dc494aca" + integrity sha512-RidGKv5kOkcerI6jQqDFDoTllQQqV+rPhTzZHhmbqtFObbYpU93uc+yG1LHivRTQhA6llIx67iudc/vzisgO+w== + dependencies: + bn.js "^4.11.9" + ethereum-bloom-filters "^1.0.6" + ethereumjs-util "^7.1.0" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + web3-utils@^1.0.0-beta.31: version "1.4.0" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.4.0.tgz#e8cb381c81b242dc1d4ecb397200356d404410e6"