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:当订阅发生错误时触发

监听返回:

  1. Object | Null 订阅失败时的错误信息
  2. 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]);

参数值:

  1. String - "newBlockNumber" 订阅类型
  2. 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:确认区块的时间戳

监听返回:

  1. Object | Null 订阅失败时的错误信息
  2. 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")

参数值:

  1. String - “syncing”,订阅类型
  2. 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")

参数值:

  1. ‘logs’ - 字符串, 订阅类型
  2. Object - 订阅选项

  3. fromBlock - Number:最早的区块号,默认值 null

  4. address - String | Array:
  5. topics - Array:

3, callback: (可选项)每次收到订阅会被调用

返回值:

EventEmitter:

  • “data” 返回 Object:当每次交易处理时返回交易哈希值
  • “changed” 返回 Object:每一条日志从区块链中删除会被触发
  • "error" 返回 Object:订阅发生错误时返回

通知返回:

  1. Object | Null - 订阅失败时的错误信息
  2. 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!');
    }
});