Web3js
Web3.js 腳本在監聽 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...
到控制台,然後退出。這種情況立即告訴我,當檢測到新對時它沒有執行,而只是單步執行程式碼。但是,我預期會發生的是,應用程序僅在檢測到新配對時才能繼續執行並登錄到控制台。我確信我忽略了一些小東西,但任何幫助將不勝感激。
嘗試這樣的事情:
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>');