web3.js 订阅日志
本文关键字: web3.jssubscribe(“logs”)
web3.eth.subscribe(‘logs’, options [, callback]);
订阅日志,并按指定条件进行过滤。 如果一个有效的 fromBlock 属性被指定,Web3 会提取从这个点开始的日志,必要时回填返回值。
参数
“logs” – String, 订阅类型
Object – 订阅选项
fromBlock – Number: 最早区块编号, 默认为 null。
address – String|Array: 地址或地址列表,仅订阅来自这些指定账户地址的日志。
topics – Array: 一个主题数组,数组中每个元素都应出现在日志项中。 数组中主题的顺序是很重要的, 如果你不想监听某个主题可以用 null 值, 比如 [null, ‘0x00…’]. 你也可以为每个主题传入另外一个数组来表示主题选项, 比如 [null, [‘option1’, ‘option2’]]
callback – Function: (可选) 可选的回调函数,其第一个参数为错误对象,第二个参数为结果。每当有订阅事件发生时都会被调用。
返回值
EventEmitter: 带有下面事件的一个 订阅实例 事件发生器:
“data” 返回 Object: 接收到新日志时触发,参数为日志对象
“changed” 返回 Object: 日志从链上移除时触发,该日志同时带有附加属性 “removed: true”
“error” 返回 Object: 当订阅中出现错误时触发
“connected” 返回 Number: 订阅成功后触发,返回订阅 id
要了解返回的事件对象结构,可查看 web3.eth.getPastEvents 返回值.
通知返回值
Object|Null – 如果订阅失败第一个参数为错误对象
Object – 日志对象,类似于 web3.eth.getPastEvents 返回值.
var subscription = web3.eth.subscribe('logs', { address: '0x123456..', topics: ['0x12345...'] }, function(error, result){ if (!error) console.log(result); }) .on("connected", function(subscriptionId){ console.log(subscriptionId); }) .on("data", function(log){ console.log(log); }) .on("changed", function(log){ }); // 取消订阅 subscription.unsubscribe(function(error, success){ if(success) console.log('Successfully unsubscribed!'); });