如何让Heroku Node.js实例无限期运行?

时间:2017-02-17 21:56:26

标签: node.js heroku firebase twilio

我已经编写了一个部署在Heroku上的简单节点服务器,它连接到我的应用程序用户编写的Firebase数据库。服务器监视子项更改,当我需要查看新数据时,通过Twilio向我发送消息。没有前端,也没有必要。我怎样才能让通常终止闲置动态游戏的Heroku无限期地运行,以便我可以让它监控Firebase并传递警报?

1 个答案:

答案 0 :(得分:3)

Heroku free web dynos that receive no traffic in a 30 minute period will sleep。这会阻止Firebase node.js child_changed侦听器保持活动状态,因此您无法收到Twilio消息。为了防止这种情况发生,您可以包含一个非常简单的setInterval函数(如this article中的示例),以低于30分钟的某个频率运行。

var http = require("http");
  setInterval(function() {
    http.get("http://<your app name>.herokuapp.com");
}, 300000); // every 5 minutes (300000)

因此,对于长期战略,我不会发现任何问题。

如果某些事情导致您的node.js服务器崩溃,您还可以包含代码以通知自己需要检查的内容:

process.on('uncaughtException', function (err) {
  console.log(err);
  twilioClient.messages.create({...}, function(twilioErr, message) {
    if (twilioErr) {
      console.log("twilio error: " + twilioErr);
    }
  });
}