Как подписаться на `newBlockHeaders` на локальном узле RSK через веб-сокеты?

Я подключаюсь к RSKj, используя следующую конечную точку:

      ws://localhost:4444/

... Однако я не могу подключиться.

Обратите внимание, что эквивалентная конечная точка HTTP http://localhost:4444/ работают на меня, поэтому я знаю, что мой узел RSKj работает правильно.

Мне нужно послушать newBlockHeaders, поэтому я предпочитаю использовать WebSockets (вместо HTTP).

Как я могу это сделать?

1 ответ

RSKj по умолчанию использует 4444как порт для транспорта HTTP; а также 4445в качестве порта для транспорта Websockets. Также обратите внимание, что конечные точки веб-сокетов не находятся в /, а скорее на webssocket. Поэтому используйте ws://localhost:4445/websocket в качестве конечной точки.

Если вы используете web3.js, вы можете создать экземпляр, который подключается через веб-сокеты, используя следующее:

      const Web3 = require('web3');
const wsEndpoint = 'ws://localhost:4445/websocket';
const wsProvider =
  new Web3.providers.WebsocketProvider(wsEndpoint);
const web3 = new Web3(wsProvider);

Вторую часть вашего вопроса можно выполнить с помощью eth_subscribe на newBlockHeaders. С помощью web3 экземпляр сверху так:

      // eth_subscribe newBlockHeaders
web3.eth.subscribe('newBlockHeaders', function(error, blockHeader) {
  if (!error) {
    // TODO something with blockHeader
  } else {
    // TODO something with error
  }
});

Другие вопросы по тегам