Go-Ethereum

無法使訂閱 newBlockHeaders 工作

  • December 17, 2020

我這樣做是為了從網路中獲取所有塊:

var web3 = new Web3();
web3.setProvider(new Web3.providers.IpcProvider("...", net));
web3.eth.subscribe('newBlockHeaders', function (err, result) {
   ...
}).on('data', function (blockHeader) {
   ...
});

但從不呼叫回調(除非我關閉 Geth)

在 Windows 和 Linux 上使用 web3 1.0 和最新的 Geth。

還嘗試使用網路套接字但沒有運氣。還有什麼我可以嘗試的嗎?

謝謝。

對我有用的不是從on事件中獲取結果,而是在回調中獲取它:

web3.eth.subscribe('newBlockHeaders', function (err, result) {
   if(!error) {
       console.log(result); // succcess!
   }
});

這對我有用

let Web3 = require('web3')

const web3 = new Web3(new Web3.providers.WebsocketProvider('wss://xxxxxx'))

web3.eth.subscribe('newBlockHeaders', function (error, result) {    
   if (!error) {
       console.log(result);
   }
});

引用自:https://ethereum.stackexchange.com/questions/27708