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