Как подключиться к публичным узлам 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);