Web3js

Web3.js 腳本在監聽 CreatedPairs 時退出

  • March 21, 2022

我正在嘗試創建一個簡單的腳本來測試 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...到控制台,然後退出。這種情況立即告訴我,當檢測到新對時它沒有執行,而只是單步執行程式碼。

但是,我預期會發生的是,應用程序僅在檢測到新配對時才能繼續執行並登錄到控制台。我確信我忽略了一些小東西,但任何幫助將不勝感激。

嘗試這樣的事情:

const options = {
   fromBlock:  'latest'
};

uFactory.events.PairCreated(options)
   .on('data', event => console.log(event))

使用 WebSocket 提供程序而不是 HTTP 提供程序,因為它不支持訂閱

最終解決我的問題是意識到我沒有使用WebService提供者。我能夠通過使用我的連接wss版本來解決這個問題。node

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

引用自:https://ethereum.stackexchange.com/questions/124349