首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ether/ hardhat网络订阅事件

使用ether/ hardhat网络订阅事件
EN

Ethereum用户
提问于 2021-04-11 09:50:44
回答 1查看 5.2K关注 0票数 5

我有一个基本的节点表达式应用程序。它通过以太和网络套接字连接到我在本地运行的安全帽网络。由于我可以成功地查询块链(例如,await ethers.getBlockNumber()返回正确的块号),所以连接似乎可以工作。

然而,我的事件侦听器似乎不起作用。回调永远不会触发。

代码示例:初始化快速应用程序时,我使用的是加载程序函数。当它被执行时,我连接到websocket提供者。然后,我成功地将当前块号打印到控制台。然后,在“块”事件(取自文档)上注册一个事件侦听器。然而,听者从不开火。

我正在连接到安全帽网络,该网络被配置为每5秒生成一个新的块(我可以看到,在硬件控制台中是这样的)。我希望侦听器每5秒被发射一次,每次都是当一个新的块被挖掘时。

我遗漏了什么?

代码语言:javascript
复制
import { ethers } from "ethers";

export default async ({ expressApp }) => {
  const provider = new ethers.providers.WebSocketProvider(
    "ws://localhost:8545"
  );

  console.log(await provider.getBlockNumber());

  provider.on("block", () => console.log("new block"));

  expressLoader({ app: expressApp });
};

编辑:如果我使用JsonRpcProvider而不是WebSocketProvider和下面的url http://localhost:8545,就会触发回调。我需要做什么来实现同样的行为与websocket?

EN

回答 1

Ethereum用户

发布于 2021-05-31 07:23:42

我也有同样的问题。

有相关的开放问题

代码语言:javascript
复制
provider.on("block", () => console.log("new block"));

上面的代码通过http工作--因为它下面有间隔轮询策略。因此没有通过ws订阅通知它,但是请求是否存在一个新的块。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/97082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档