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

Я пытаюсь подключиться к RSK Mainnet или RSK Testnet через веб-узлы. Вот что я пробовал для Mainnet:

      const wsProvider = new Web3.providers.WebsocketProvider('ws://public-node.rsk.co');
const web3 = new Web3(wsProvider);
web3.eth.subscribe('newBlockHeaders', function(error, blockHeader){
    if (!error) {
        console.log("new blockheader " + blockHeader.number)
    } else {
        console.error(error);
    }
});

с этим результатом:

      connection not open on send()
Error: connection not open

И я сделал то же самое с Testnet, но используя ws://public-node.testnet.rsk.co, получая аналогичный результат. Ни то, ни другое не работает, как видно из ошибок выше. Как я могу подключиться?

2 ответа

Милтон: Я не уверен, но думаю, что веб-сокет не включен в общедоступных узлах.

Обычно он не включен в других известных мне публичных узлах блокчейна.

Общедоступные узлы RSK предоставляют конечные точки JSON-RPC только через HTTP .

Они не предоставляют конечные точки JSON-RPC через веб-сокеты, поэтому, к сожалению, вы не можете делать именно то, что описали.

Однако вы можете добиться чего-то эквивалентного, запустив собственный узел RSK и используя его для установления соединений через веб-сокеты.

Вот параметры конфигурации RSK для RPC .

Кроме того, вы можете увидеть значения конфигурации по умолчанию в "базовом" файле конфигурации для <tcode id="54554054"></tcode>

        ws {
      enabled = false
      bind_address = localhost
      port = 4445
  }

Кроме того, вы должны включить /websocketсуффикс в вашей конечной точке. Конечная точка веб-сокета по умолчанию при запуске собственного узла: ws://localhost:4445/websocket. Поэтому обновите начальную часть вашего кода, чтобы она выглядела так:

      const wsProvider = new Web3.providers.WebsocketProvider('ws://localhost:4445/websocket');
const web3 = new Web3(wsProvider);
Другие вопросы по тегам