Web3.js 中未显示可靠事件



我正在尝试在 Solidity 中设置一个事件并从 Web3js 收听它,但我不断得到null响应。这是我的代码:

合同的相关部分:

event NewUser(string userid);
function createNewUser(string memory _userId) public {
    // creating the user and setting it to a mapping 
    emit NewUser(_userId);
}

JavaScript,来自以太坊的参考:

async function watchEvents(contract) {
    contract.events.allEvents({
       fromBlock: 0
    },function(error, event){ console.log('all events?'); console.log(event); })
  .on('data', function(event){
     console.log(event); // same results as the optional callback above
  })
  .on('changed', function(event){
     // remove event from local database
  })
  .on('error', console.error);
}

使用另一个JavaScript函数,我可以看到正在创建新用户,并且交易在Ganache上被列为成功。但是watchEvents方法一直在打印null.

我错过了什么?

请连接到 websocket 提供程序以启用侦听事件。若要运行 Websocket 提供程序,请使用以下标志运行节点:

--ws --wsport XXXX --wsorigins="*"

请注意,出于安全原因,您很可能不希望允许*,而是更明确。

然后通过类似以下内容连接到它:

const web3 = new Web3(new Web3.providers.WebsocketProvider("ws://localhost:XXXX"))

相关内容

  • 没有找到相关文章

最新更新