我正在尝试通过websockets连接到RSK主网或RSK测试网。下面是我在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
,得到类似的结果。从上面的错误中可以看出,这两种方法都不起作用。我如何连接?
米尔顿我不确定,但我认为websocket在公共节点中没有启用。
通常在我所知道的其他公共区块链节点中没有启用。
RSK公共节点仅通过HTTP公开JSON-RPC端点.
他们不通过websockets暴露JSON-RPC端点;所以很遗憾,你不能完全做到你所描述的。
然而,你可以得到等价的东西通过运行自己的RSK节点,并使用它来建立websockets连接。
这是风险风险系数
您还可以看到默认配置值在"基地";配置文件,用于rpc.providers.ws
ws {
enabled = false
bind_address = localhost
port = 4445
}
另外,您应该在端点中包含/websocket
后缀。当运行自己的节点时,默认的websocket端点是:ws://localhost:4445/websocket
。因此,请更新代码的初始部分,它看起来像这样:
const wsProvider = new Web3.providers.WebsocketProvider('ws://localhost:4445/websocket');
const web3 = new Web3(wsProvider);