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

ed9*_*133 0 heroku node.js twilio firebase

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

Pat*_*ham 5

在 30 分钟内没有流量的 Heroku 免费网络 dynos 将休眠。这会阻止 Firebase node.js child_changed 侦听器保持活动状态,因此您将不会收到 Twilio 消息。为了防止这种情况发生,您可以包含一个非常简单的 setInterval 函数(如本文中的示例),以低于 30 分钟的某个频率运行。

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

因此,对于长期战略,我认为它没有任何问题。

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

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