youchain-core-subscription
使用 youchain-core-subscription 这个依赖包可以在 YOUChain 中监听特定事件。
备注:此处调用监听需要使用 Websocket Provider。
subscribe
youchain.you.subscribe([ 'type', 'options', 'callback' ])
参数值:
参数值 | 描述 |
---|---|
String | 需要监听的事件名称 |
Mixed | (可选项)根据特定的事件添加额外参数 |
Function | (可选项)每次订阅事件触发时会被调用 |
返回值:
EventEmitter:订阅示例
- subscription.id:用来识别或取消订阅
- subscription.subscribe([callback]):可以使用相同参数再次订阅
- subscription.unsubscribe([callback]):取消订阅,成功后回调会返回 TRUE
- subscription.arguments:再次订阅使用的参数
- on("data") 返回 Object:当日志作为参数时触发
- on("changed") 返回 Object:当日志从 youchain 中移除时触发
- on("error") 返回 Object:订阅发生错误会触发
示例:
const subscription = youchain.you.subscribe('logs', {
address: '0x123456..',
topics: ['0x12345...']
}, function(error, result){
if (!error)
console.log(result);
});
// unsubscribes the subscription
subscription.unsubscribe(function(error, success){
if(success)
console.log('Successfully unsubscribed!');
});
clearSubscriptions
描述:移除监听事件。
返回值:Promise
示例:
youchain.you.clearSubscriptions()
示例:
youchain.you.subscribe('logs', {} ,function(){ ... });
youchain.you.clearSubscriptions();
subscribe("pendingTransactions")
参数值:
- String:订阅类型
- Function: (可选项)每次收到一条订阅会触发
返回值:
EventEmitter:
- “data” 返回 String:当每次交易处理时返回交易哈希值
- "error" 返回 Object:当订阅发生错误时触发
监听返回:
- Object | Null 订阅失败时的错误信息
- String 交易哈希值
youchain.you.subscribe('pendingTransactions' [, callback]);
示例:
const subscription = youchain.you.subscribe('pendingTransactions', function(error, result){
if (!error)
console.log(result);
})
.on("data", function(transaction){
console.log(transaction);
});
// unsubscribes the subscription
subscription.unsubscribe(function(error, success){
if(success)
console.log('Successfully unsubscribed!');
});
subscribe("newBlockHeaders")
youchain.you.subscribe('newBlockHeaders' [, callback]);
参数值:
- String - "newBlockNumber" 订阅类型
- Function - (可选项) 每次订阅时会被调用
返回值:
EventEmitter:
- “data” 返回 String:当下一个区块头到来时
- "error" 返回 Object:当订阅发生错误时触发
返回的区块头信息如下:
- number - Number:区块数,pending block 返回 null
- hash - 32 字节 String:当前区块哈希值。 pending block 返回 null
- parentHash - 32 字节 String:父区块哈希值。
- nonce - 8 字节 String:本次交易之前发送方已经生成的交易数量.
- sha3Uncles - 32 字节 String:块中的叔父数据 sha3 加密值
- logsBloom - 256 字节 String:
- transactionRoot - 32 字节 String:区块中交易 trie 的根节点
- stateRoot - 32 字节 String:区块中状态 trie 的根节点
- receiptRoot - 32 字节 String:交易发生后交易票据用来存储状态并放在 key 索引的 trie,trie 的哈希 值放在区块头中
- miner - String:挖矿奖励的地址
- extraData - String:区块的 extra data 字段
- gasLimit - Number:区块中允许的最大 gas
- gasUsed - Number:区块中所有交易使用的 gas
- timestamp - Number:确认区块的时间戳
监听返回:
- Object | Null 订阅失败时的错误信息
- Object 区块头信息
示例:
const subscription = youchain.you.subscribe('newBlockHeaders', function(error, result){
if (!error) {
console.log(result);
return;
}
console.error(error);
})
.on("data", function(blockHeader){
console.log(blockHeader);
})
.on("error", console.error);
// unsubscribes the subscription
subscription.unsubscribe(function(error, success){
if (success) {
console.log('Successfully unsubscribed!');
}
});
subscribe("syncing")
参数值:
- String - “syncing”,订阅类型
- Function - (可选项)每次接受订阅时触发
返回值:
EventEmitter:
- “data” 返回 Object:当每次交易处理时返回交易哈希值
- “changed” 返回 Object:开始同步时为 true,完成后为 false
- "error" 返回 Object:订阅发生错误时返回
youchain.you.subscribe('syncing' [, callback]);
示例:
const subscription = youchain.you.subscribe('syncing', function(error, sync){
if (!error)
console.log(sync);
})
.on("data", function(sync){
// show some syncing stats
})
.on("changed", function(isSyncing){
if(isSyncing) {
// stop app operation
} else {
// regain app operation
}
});
// unsubscribes the subscription
subscription.unsubscribe(function(error, success){
if(success)
console.log('Successfully unsubscribed!');
});
subscribe("logs")
参数值:
- ‘logs’ - 字符串, 订阅类型
Object - 订阅选项
fromBlock - Number:最早的区块号,默认值 null
- address - String | Array:
- topics - Array:
3, callback: (可选项)每次收到订阅会被调用
返回值:
EventEmitter:
- “data” 返回 Object:当每次交易处理时返回交易哈希值
- “changed” 返回 Object:每一条日志从区块链中删除会被触发
- "error" 返回 Object:订阅发生错误时返回
通知返回:
- Object | Null - 订阅失败时的错误信息
- Object - log 对象,可参考 youchain.you.getPastEvents 返回值
youchain.you.subscribe('logs', options [, callback]);
示例:
const subscription = youchain.you.subscribe('logs', {
address: '0x123456..',
topics: ['0x12345...']
}, (error, result) => {
if (!error) {
console.log(result);
}
console.error(error);
})
.on("data", (log) => {
console.log(log);
})
.on("changed", (log) => {
console.log(log);
});
// unsubscribes the subscription
subscription.unsubscribe((error, success) => {
if (success) {
console.log('Successfully unsubscribed!');
}
});