Как подписаться на `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
}
});