7

我正在尝试通过 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,得到了类似的结果。如上面的错误所示,这些都不起作用。我该如何连接?

4

2 回答 2

2

Milton 我不确定,但我认为公共节点中没有启用 websocket。

通常我知道的其他公共区块链节点中没有启用它。

于 2021-03-04T13:47:11.693 回答
1

RSK 公共节点仅通过 HTTP公开 JSON-RPC 端点。

它们不会通过 websocket 公开 JSON-RPC 端点,因此很遗憾,您无法完全按照您的描述进行操作。

但是,您可以通过运行自己的 RSK 节点来实现等效的操作,并使用它来建立 websockets 连接。

以下是 RPC 的 RSK 配置选项

此外,您可以在“base”配置文件中查看默认配置值,例如 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);
于 2021-03-26T03:38:12.830 回答