【问题标题】:How to connect to RSK public nodes over websockets?如何通过 websockets 连接到 RSK 公共节点?
【发布时间】:2021-06-03 03:54:06
【问题描述】:

我正在尝试通过 websocket 连接到 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 rpc rsk


    【解决方案1】:

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

    我知道的其他公有区块链节点通常是不启用的。

    【讨论】:

      【解决方案2】:

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

      他们通过 websocket 公开 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);
      

      【讨论】:

        猜你喜欢
        • 2021-06-19
        • 2021-08-06
        • 1970-01-01
        • 2014-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多