Blockchain 如何在以太坊智能合约上触发事件时获得通知

Blockchain 如何在以太坊智能合约上触发事件时获得通知,blockchain,ethereum,solidity,smartcontracts,web3js,Blockchain,Ethereum,Solidity,Smartcontracts,Web3js,当有人从我的帐户转账时,事件将获取触发器名称 event Transfer(address indexed from, address indexed to, uint to) 现在,我希望在智能合约上发生此事件时得到通知。我尝试了不同的东西,如过滤器,手表,订阅等,但没有根据需要工作 我还有一个问题 过滤、订阅和观看到底做什么。我总是混淆这些术语。有人能给出一个清晰的想法吗 注意:我使用的是WEB3JS 1.0.0.26版本。下面是一个关于WEB3JS 1.0.0.beta*的简单示例: f

当有人从我的帐户转账时,事件将获取触发器名称

event Transfer(address indexed from, address indexed to, uint to)
现在,我希望在智能合约上发生此事件时得到通知。我尝试了不同的东西,如过滤器,手表,订阅等,但没有根据需要工作

我还有一个问题 过滤、订阅和观看到底做什么。我总是混淆这些术语。有人能给出一个清晰的想法吗


注意:我使用的是WEB3JS 1.0.0.26版本。

下面是一个关于
WEB3JS 1.0.0.beta*的简单示例:

function handler (event) {
   console.log(event.returnValues);
}

function errorCallback (err) {
   console.error(err);
}

let subscription = contractObj.events.TestEvent().subscription;
subscription.on('data', handler).on('error', errorCallback);
取消订阅:

subscription.unsubscribe(function (result) {
   console.log(result)
});
课堂使用示例:

class Listener {
  constructor(event, handler) {
    this.subscription = event;
    this.subscription.on('data', handler).on('error', this.errorCallback);
  }

  errorCallback(err) {
    console.log(err);
  }
}


class Test {
  constructor(contractObj) {
    this.contractObj = contractObj;
    this.createListener();
  }

  createListener() {
    let self = this;
    this.listener = new Listener(this.contractObj.events.TestEvent(), function (event) {
      self.returnValues = event.returnValues;
    });
  }
}

这是行不通的。订阅在
1.0.0-beta.27上未定义@DmitryWorks fine for me
@Harshlet subscription=contractObj.events.TestEvent().subscription;你的这一行没有定义。在contractObj.events.TestEvent()之前,我得到一个订阅{},但是当我执行这一行contractObj.events.TestEvent().Subscription时;它正在变得不明确。甚至我也从订阅改为订阅,但它不起作用。合同是这样初始化的
让contractObj=new web3.eth.contract(contractAbi,contractAddress)
并且TestEvent在ABI中声明了吗@HarshI已经看过了,是的,我在事件部分有转移事件,而且我已经按照你们上面写的方式初始化ContractObj。