web3.eth.subscribe - 订阅链上事件
优质
小牛编辑
148浏览
2023-12-01
使用web3.eth.subscribe()
方法来订阅区块链上的指定事件。
调用:
web3.eth.subscribe(type [, options] [, callback]);
参数:
type
:String - 订阅类型options
:Mixed - 可选的额外参数,依赖于订阅类型callback
:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为结果
返回值:
EventEmitter - 订阅实例对象,具有以下字段:
- subscription.id: 订阅id编号,用于标识一个订阅以及进行后续的取消订阅操作
- subscription.subscribe([callback]): 可用于使用相同的参数进行再次订阅
- subscription.unsubscribe([callback]): 取消订阅,如果成功取消的话,在回调函数中返回true
- subscription.arguments: 订阅参数,当重新订阅时使用
- on("data") 返回 Object: 每次有新的日志时都触发该事件,参数为日志对象
- on("changed") 返回 Object: 每次有日志从区块链上移除时触发该事件,被移除的日志对象将添加额外的属性:"removed: true"
- on("error") 返回 Object: 当订阅中发生错误时,触发此事件
通知返回值:
Mixed - 取决于具体的订阅类型
示例代码:
var subscription = web3.eth.subscribe('logs', {
address: '0x123456..',
topics: ['0x12345...']
}, function(error, result){
if (!error)
console.log(log);
});
// unsubscribes the subscription
subscription.unsubscribe(function(error, success){
if(success)
console.log('Successfully unsubscribed!');
});