WebSocket API概述
Infura的websocket访问端结点提供了对Pub/Sub API以及JSON-RPC过滤器 的支持。另外,在Websocket连接上也支持普通的以太坊JSON-RPC API。
在这一部分的示例中使用了wscat
,但是你可以使用任何支持websocket的工具。
可以在如下地址获取这些工具:
Websocket订阅请求需要在url中包含你的项目ID:
wscat -c wss://mainnet.infura.io/ws/v3/YOUR-PROJECT-ID
在安全环境中发起的订阅请求可以包含如下的项目密文/Project Secret:
wscat -c wss://mainnet.infura.io/ws/v3/YOUR-PROJECT-ID --auth ":YOUR-PROJECT-SECRET"
示例代码
下面的代码展示了使用web3.js 1.0创建一个到infura的websocket访问端结点的 连接,然后使用订阅:
const Web3 = require("web3");
let web3 = new Web3(
// Replace YOUR-PROJECT-ID with a Project ID from your Infura Dashboard
new Web3.providers.WebsocketProvider("wss://mainnet.infura.io/ws/v3/YOUR-PROJECT-ID")
);
const instance = new web3.eth.Contract(<abi>, <address>);
instance.getPastEvents(
"SomeEvent",
{ fromBlock: "latest", toBlock: "latest" },
(errors, events) => {
if (!errors) {
// process events
}
}
);
注意: web3.js 1.0.0-beta.34有一个请求头方面的bug, 因此请使用1.0.0-beta.36或更新的版本,或者回退到 1.0.0-beta.33版本。