Не удается заставить работать подписку newBlockHeaders

Я делаю это, чтобы получить все блоки из сети:

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

но обратные вызовы никогда не вызываются (кроме случаев, когда я отключаю Geth)

Использование web3 1.0 и последней версии Geth в Windows и Linux.

Также безуспешно пытался использовать веб-сокеты. Есть ли что-то еще, что я могу попробовать?

Спасибо.

Ваш синтаксис выглядит правильно, я предполагаю, что IpcProviderне подключается. Я собрал этот пример репозитория, который успешно использует web3 v1.0. Вот рабочий пример использования веб-сокетов для подписки newBlockHeaders: github.com/leopoldjoy/react-ethereum-dapp-example/blob/master/…

Ответы (2)

Что сработало для меня, так это не получить результат от 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);
    }
});
не работает через несколько минут