Web3.js 侦听 CreatedPairs 时脚本退出

Web3.js Script exits while listening to CreatedPairs

我正在尝试创建一个简单的脚本来测试 Web3.js CreatedPairs 的事件监听功能。但是,我的脚本 运行 执行了一次代码然后退出,而不是继续侦听创建的对,我不知道为什么。

const Web3 = require('web3')
const web3 = new Web3(Web3.givenProvider || 'https://mynodeishere');

const IUniswapV2Factory = require("@uniswap/v2-core/build/IUniswapV2Factory.json")
const UNI_FACTORY_ADDRESS = '0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f'
const uFactory = new web3.eth.Contract(IUniswapV2Factory.abi, UNI_FACTORY_ADDRESS)


const main = async () => {

    // Create event listener to listen to PairCreated
    uFactory.events.PairCreated({}, async (error, event) => {
    
        console.log(`New pair detected...\n`)

    })
}

main()

最终发生的事情是当我 运行 node ./myapp.js。代码进入并记录 New pair detected... 到控制台,然后退出。这种情况立即告诉我,当检测到新对时它不会执行,而只是单步执行代码。

但是,我预计会发生的情况是,应用程序会继续 运行 并仅在检测到新对时才登录到控制台。我确定我忽略了一些小问题,但我们将不胜感激。

在此上下文中,Web3.givenProvidernull,因此使用了 HTTP 提供程序。

要能够订阅事件,您需要使用 WSS 提供程序。

// example connection to a WSS provider
const web3 = new Web3('wss://mainnet.infura.io/ws/v3/<yourtoken>');