diff --git a/lib/contracts/provider.js b/lib/contracts/provider.js index 7d9b088d..a485b09a 100644 --- a/lib/contracts/provider.js +++ b/lib/contracts/provider.js @@ -1,6 +1,12 @@ const ProviderEngine = require('embark-web3-provider-engine'); const RpcSubprovider = require('embark-web3-provider-engine/subproviders/rpc'); const WsSubprovider = require('embark-web3-provider-engine/subproviders/websocket'); +const CacheSubprovider = require('embark-web3-provider-engine/subproviders/cache.js'); +const FixtureSubprovider = require('embark-web3-provider-engine/subproviders/fixture.js'); +const FilterSubprovider = require('embark-web3-provider-engine/subproviders/filters.js'); +const VmSubprovider = require('embark-web3-provider-engine/subproviders/vm.js'); +const NonceSubprovider = require('embark-web3-provider-engine/subproviders/nonce-tracker.js'); +const SubscriptionSubprovider = require('embark-web3-provider-engine/subproviders/subscriptions'); const async = require('async'); const AccountParser = require('./accountParser'); const fundAccount = require('./fundAccount'); @@ -23,12 +29,20 @@ class Provider { startWeb3Provider(callback) { const self = this; +// cache layer +// self.addProvider(new CacheSubprovider()) + + // self.addProvider(new NonceSubprovider()) + if (this.type === 'rpc') { self.engine.addProvider(new RpcSubprovider({ rpcUrl: self.web3Endpoint })); } else if (this.type === 'ws') { - self.engine.addProvider(new WsSubprovider({ + //self.engine.addProvider(new WsSubprovider({ + console.log('USing ws'); + self.addProvider(new SubscriptionSubprovider()); + self.addProvider(new WsSubprovider({ rpcUrl: self.web3Endpoint, origin: this.blockchainConfig.wsOrigins.split(',')[0] })); @@ -37,6 +51,7 @@ class Provider { } + // network connectivity error self.engine.on('error', (err) => { // report connectivity errors @@ -44,7 +59,18 @@ class Provider { }); self.engine.start(); - self.web3.setProvider(self); + //self.on('error', (err) => { + // console.log('ERR', JSON.stringify(err)); + // // report connectivity errors as trace due to polling + // self.logger.trace('web3 provider error: ', err); + // self.logger.trace('stopping web3 provider due to error'); + + // // prevent continuous polling errors + // self.stop(); + //}); + + //self.web3.setProvider(self); + //self.start(); self.accounts = AccountParser.parseAccountsConfig(self.accountsConfig, self.web3, self.logger); self.addresses = []; diff --git a/lib/modules/blockchain_process/blockchain.js b/lib/modules/blockchain_process/blockchain.js index a6e993a4..74665cf7 100644 --- a/lib/modules/blockchain_process/blockchain.js +++ b/lib/modules/blockchain_process/blockchain.js @@ -46,12 +46,13 @@ var Blockchain = function(options) { whisper: (this.blockchainConfig.whisper === undefined) || this.blockchainConfig.whisper, maxpeers: ((this.blockchainConfig.maxpeers === 0) ? 0 : (this.blockchainConfig.maxpeers || 25)), bootnodes: this.blockchainConfig.bootnodes || "", - rpcApi: (this.blockchainConfig.rpcApi || ['eth', 'web3', 'net', 'debug']), + rpcApi: (this.blockchainConfig.rpcApi || ['eth', 'web3', 'net', 'debug', 'pubsub']), wsRPC: (this.blockchainConfig.wsRPC === undefined) || this.blockchainConfig.wsRPC, wsHost: dockerHostSwap(this.blockchainConfig.wsHost) || defaultHost, wsPort: this.blockchainConfig.wsPort || 8546, wsOrigins: this.blockchainConfig.wsOrigins || false, wsApi: (this.blockchainConfig.wsApi || defaultWsApi), + // wsApi: (this.blockchainConfig.wsApi || ['eth', 'web3', 'net', 'shh', 'debug']), vmdebug: this.blockchainConfig.vmdebug || false, targetGasLimit: this.blockchainConfig.targetGasLimit || false, syncMode: this.blockchainConfig.syncMode, diff --git a/test_apps/test_app/config/blockchain.json b/test_apps/test_app/config/blockchain.json index 8f55b6da..a3247a56 100644 --- a/test_apps/test_app/config/blockchain.json +++ b/test_apps/test_app/config/blockchain.json @@ -1,4 +1,4 @@ -{ + "default": { "enabled": true, "rpcHost": "localhost", diff --git a/test_apps/test_app/test/simple_storage_spec.js b/test_apps/test_app/test/simple_storage_spec.js index 3ee31b10..d723cb52 100644 --- a/test_apps/test_app/test/simple_storage_spec.js +++ b/test_apps/test_app/test/simple_storage_spec.js @@ -4,6 +4,11 @@ let accounts; const Utils = require('embarkjs').Utils; config({ + deployment: { + type: 'ws', + host: 'localhost', + port: '8546' + }, contracts: { "SimpleStorage": { args: [100],