问题描述
我正在尝试通过 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
我对测试网做了同样的事情,但使用了 ws://public-node.testnet.rsk.co
,得到了类似的结果。
如上面的错误所示,这些都不起作用。
如何连接?
解决方法
米尔顿 我不确定,但我认为公共节点中未启用 websocket。
通常在我知道的其他公共区块链节点中没有启用。
,RSK 公共节点仅通过 HTTP 公开 JSON-RPC 端点。
他们不会通过 websockets 公开 JSON-RPC 端点, 很遗憾,您无法完全按照您的描述进行操作。
但是,您可以实现相同的目标 通过运行您自己的 RSK 节点, 并使用它来建立 websockets 连接。
这是 RSK configuration options for RPC 。
另外,你可以看到默认的配置值
在“基本”配置文件中,对于
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);