Проверка работоспособности на Websocket

Я просмотрел документацию и не нашел ее полезной.

Я хотел бы знать, как лучше всего проверить работоспособность моего подключения через веб-сокет к 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);

С уважением

Ответы (1)

Похоже, есть открытый вопрос по этой проблеме:

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);
});
Извините за поздний ответ, к сожалению, я никогда не получаю событие "конец"... Я пытался отключить интернет-соединение и ничего не получил