首页 > 解决方案 > web3 ethereum subscribe 并不总是有效

问题描述

当订阅方法不起作用时,有时我会遇到这个问题。而且我找不到调试订阅操作是否启动的方法。甚至“错误”和“结束”处理程序似乎也不起作用。

async initWssServer(e = false) {
    if (e) {
        console.error('WSS disconnected')
        console.error(e)
    }

    this.server = await new Web3('wss://mainnet.infura.io/ws')
    this.events = events

    const subscribe = this.server.eth.subscribe('newBlockHeaders', async (err, data) => {
        if (err) {
            return this.initWssServer(err)
        }

        return this.events.emit('new_block', data)
    })

    subscribe.on('error', e => this.initWssServer(e))
    subscribe.on('end', e => this.initWssServer(e))

    return true
}

有没有办法检查订阅是否开始,如果没有 - 重播或做点什么?

标签: javascriptnode.jsethereumwssweb3

解决方案


推荐阅读