如何使用 web3 在 nodejs 中连接 binance 网络

How to connect binance network in nodejs using web3

我尝试在 Nodejs 中连接到币安测试网。这是我的代码。

const Web3 = require('web3');
const web3 = new Web3(new Web3.providers.HttpProvider('https://data-seed-prebsc-1-s2.binance.org:8545'));

但是我得到了类似

的错误代码
Error: The current provider doesn't support subscriptions: HttpProvider
    at Timeout._onTimeout (E:\test\share1\node_modules\web3-core-subscriptions\lib\subscription.js:176:24)

请告诉我如何修复它。

HTTP provider, does not support subscriptions.

来源:https://web3js.readthedocs.io/en/v1.7.0/web3.html#value


如果您想使用订阅,您需要连接到 websocket 节点 - 而不是 HTTP。

Binance 在 docs page 中推荐了第 3 方节点提供商的列表。其中一些也支持websocket连接。

连接到 WSS 节点提供商的示例:

const Web3 = require('web3');
const web3 = new Web3(
    new Web3.providers.WebsocketProvider(
        'wss://speedy-nodes-nyc.moralis.io/<your_key>/bsc/mainnet/ws'
    )
);

web3.eth.subscribe('newBlockHeaders', (err, newBlock) => {
    console.log(newBlock.number);
});

上面的 web3 部分工作正常。请尝试以下几行,

var Web3 = require('web3');
const web3_bsc = new Web3('https://data-seed-prebsc-1-s2.binance.org:8545');

然后使用 web3_bsc,访问您合约中的功能或执行 web3 支持的任何功能。