当我在另一个页面中使用web3并打印web3对象时,它返回node1的连接,根据我的web3.js文件,它应该返回node2的连接,因为在我的node1中只有2000块同步
我也使用了timeInterval(),但是它没有起作用
-------------------------------web3.js------------------------
var node1='http://localhost:8545'
var node2='http://localhost:3545'
var Web3 = require('web3');
var web3 = new Web3(new Web3.providers.HttpProvider((node1));
if(!web3.isConnected()) {
web3 = new Web3(new Web3.providers.HttpProvider((node2));
}
else {
web3.eth.getBlockNumber(function(er,blck){
if(blck>7300000){
console.log('==> ETH connection to node1);
}else{
web3=undefined
web3 = new Web3(new Web3.providers.HttpProvider((node2));
console.log('==> ETH connection to node2);
}
});
}
web3.eth.getBlockNumber(function(er,block){
console.log(block,web3)
// here code works fine, web3 object is for node2
})
module.exports = web3;
--------------------------------------------------
。
----------------------demo.js---------------------
var web3 = require(./web3);
web3.eth.getBlockNumber(function(er,block){
console.log(block,web3)
// here code did not work, web3 object is for node1
})
-----------------------------------------------------
发布于 2019-03-04 18:35:50
您必须编写一个监视程序来主动监视连接,如果它是活动的或非活动的,那么简单的监视程序可以是一个迭代以检查while
状态的isConnected
循环。
var web3 = new Web3(new Web3.providers.HttpProvider(NODE));
var interval = setInterval(() => {
if (!web3.isConnected()) {
web3 = new Web3(new Web3.providers.HttpProvider(NODE));
}
}, 2000)
也可以使用timeInterval
创建
https://ethereum.stackexchange.com/questions/67909
复制相似问题