如何使用 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 支持的任何功能。
我尝试在 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 支持的任何功能。