Приложение Web3 в Heroku

#javascript #node.js #heroku #websocket #web3

Вопрос:

У меня возникла проблема с запуском приложения web3, которое только и делает, что прослушивает события блокчейна, а затем обновляет подключенную базу данных. Вот фрагмент

 const web3 = new Web3();
web3.setProvider(new web3.providers.WebsocketProvider(WSS_PROVIDER));

const delay = (secs) => new Promise ((resolve, reject) => setTimeout(resolve, secs*1000));


const getBlockCount = () => new Promise ( (resolve, reject) => web3.eth.getBlockNumber( (err, blockNumber) => {
  if (typeof blockNumber ==='undefined') reject(err);
  else resolve(blockNumber);
}));

const marketAddress = MARKET_CONTRACT.address || null;
if (marketAddress == null ) throw "Run source .env first";


const markety = new web3.eth.Contract(MARKET_CONTRACT.abi, marketAddress);

const checkLatestEvents = (blocks) => getBlockCount().then(count => {
  console.log(`blocks of blocks ${blocks}`);
  console.log(`count of blocks ${count}`);
  markety.events.MarketMinted({
    fromBlock: count-blocks
  })
  .on('data', async function(event){
    console.log(event); // same results as the optional callback above
    let {request_id, token_id} = event.returnValues;
    let mintedToken = await TokenModel.findByPk("chkn" request_id);
    await mintedToken.update({minted: true, tokenId: Number(token_id)});
  })
  .on('error', console.error);
}).catch(err => {
  console.error(err);
  runCheckLatestEventsLoop();
}) ;

const runCheckLatestEventsLoop = async () => {
  while(true) {
    checkLatestEvents(100);
    await delay(10);
    web3.eth.clearSubscriptions();
  }
}
 

он работает без проблем на моем локальном компьютере, но всегда завершается в heroku даже до выполнения всего одного сканирования событий.

Я нахожусь на бесплатном уровне в Heroku, я ожидаю, что если я обновлю приложение, оно может работать без проблем, верно ?