Infura开发手册

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

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版本。