Я просмотрел документацию и не нашел ее полезной.
Я хотел бы знать, как лучше всего проверить работоспособность моего подключения через веб-сокет к geth (вчера я узнал, что не получил новое событие несколько дней назад без какой-либо причины).
У меня есть решение, но это вряд ли лучший подход.
const web3 = new Web3(new Web3.providers.WebsocketProvider(networkUri));
setInterval(() => {
console.log('Check WS status');
let subscription;
new Promise((resolve, reject) => {
subscription = web3.eth.subscribe('pendingTransactions')
.on('data', function () {
return resolve(true);
})
.on('error', function () {
return reject(false);
});
})
.then(() => {
console.log('OK');
})
.catch(() => {
console.log('NOK');
reconnect();
})
.finally(() => {
// unsubscribes the subscription
subscription.unsubscribe(function (error, success) {
if (success)
console.log('Successfully unsubscribed!');
});
})
}, 30000);
С уважением
Похоже, есть открытый вопрос по этой проблеме:
https://github.com/ethereum/web3.js/issues/1391
https://github.com/ethereum/web3.js/issues/1558
Как говорится (сам не проверял), есть конечное событие, которое должно обнаруживать закрытие
const wes3 = new Web3(new Web3.providers.WebsocketProvider('wss://rinkeby.infura.io/ws'));
wes3._provider.on('end', (eventObj) => {
console.log('Disconnected: ');
console.log(eventObj);
});
октаподия