Node.js Fabric NodeSDK addBlockListener给出错误,如果没有挂起的块,则失败

Node.js Fabric NodeSDK addBlockListener给出错误,如果没有挂起的块,则失败,node.js,async-await,hyperledger-fabric,Node.js,Async Await,Hyperledger Fabric,我正在尝试添加多个块侦听器,我的代码如下: for (var i=0; i<channelid.length; i++) { let cid = channelid[i] let nextBlock = 1 configPath = path.resolve(__dirname, `${cid}.nextBlock`) if (fs.existsSync(configPath)) { nextBlock = fs.readFileSync(c

我正在尝试添加多个块侦听器,我的代码如下:

for (var i=0; i<channelid.length; i++) {
    let cid = channelid[i]
    let nextBlock = 1
    configPath = path.resolve(__dirname, `${cid}.nextBlock`)
    if (fs.existsSync(configPath)) {
        nextBlock = fs.readFileSync(configPath, "utf8")
    } else {
        fs.writeFileSync(configPath, parseInt(nextBlock, 10))
    }

    console.log(`Adding listener for channel ${cid}`)
    network = await gateway.getNetwork(cid)
    listener = await network.addBlockListener(
        async (event) => {
            await ProcessingMap.set(cid, event.blockData.header.number, event.blockData)
            console.log(`[${cid}] Added block ${event.blockData.header.number} to ProcessingMap`)
        },
        { startBlock: parseInt(nextBlock, 10) }
    )

    console.log(`[${cid}]: Listening for block events, nextblock: ${nextBlock}`)
    processPendingBlocks(ProcessingMap, cid, configPath)
};
然后此侦听器将无法拾取更多的块事件

如果我配置侦听多个通道,比如说
mychannel1
没有挂起的块,但是
mychannel2
有挂起的块,那么
mychannel1
侦听器将出现上述错误,并且
mychannel
中的后续块事件将不会被拾取<代码>mychannel2将不受
mychannel1
侦听器故障的影响

  • 当我没有挂起的块要处理时,如何解决此错误

  • 如何处理此错误场景,以便即使没有挂起的块,侦听器仍将成功添加并能够侦听后续事件

  • (我对NodeJS不是很在行,所以我希望通过简单的解释和示例代码来帮助我理解。)

    Adding listener for channel mychannel
    2020-10-19T19:41:34.545Z - error: [EventService]: EventService[peer2.org1.xxx.com,peer3.org1.xxx.com,peer1.org1.xxx.com] timed out after:3000
    2020-10-19T19:41:34.547Z - error: [EventService]: send[peer2.org1.xxx.com,peer3.org1.xxx.com,peer1.org1.xxx.com] - #1 - Starting stream to peer2.org1.xxx.com failed
    2020-10-19T19:41:37.552Z - error: [EventService]: EventService[peer2.org1.xxx.com,peer3.org1.xxx.com,peer1.org1.xxx.com] timed out after:3000
    2020-10-19T19:41:37.552Z - error: [EventService]: send[peer2.org1.xxx.com,peer3.org1.xxx.com,peer1.org1.xxx.com] - #1 - Starting stream to peer3.org1.xxx.com failed
    2020-10-19T19:41:40.555Z - error: [EventService]: EventService[peer2.org1.xxx.com,peer3.org1.xxx.com,peer1.org1.xxx.com] timed out after:3000
    2020-10-19T19:41:40.555Z - error: [EventService]: send[peer2.org1.xxx.com,peer3.org1.xxx.com,peer1.org1.xxx.com] - #1 - Starting stream to peer1.org1.xxx.com failed
    2020-10-19T19:41:40.555Z - error: [BlockEventSource]: Failed to start event service message=Event service timed out - Unable to start listening, stack=Error: Event service timed out - Unable to start listening
        at Timeout.setTimeout [as _onTimeout] (/home/centos/nodejs/node_modules/fabric-common/lib/EventService.js:408:12)
        at ontimeout (timers.js:436:11)
        at tryOnTimeout (timers.js:300:5)
        at listOnTimeout (timers.js:263:5)
        at Timer.processTimers (timers.js:223:10)
    [mychannel]: Listening for block events, nextblock: 26