Я написал простой сервер Node, развернутый на Heroku, который подключается к базе данных Firebase, написанной пользователями моего приложения. Сервер отслеживает изменения дочерних элементов, отправляет мне сообщение через Twilio, когда мне нужны новые данные. Там нет передней части, и не должно быть. Как я могу использовать Heroku, который обычно заканчивает idle dynos, запускать это на неопределенный срок, чтобы я мог контролировать монитор Firebase и передавать предупреждения?Как я могу хранить экземпляр Heroku Node.js неограниченно долго?
ответ
Heroku free web dynos that receive no traffic in a 30 minute period will sleep. Это препятствует тому, чтобы слушатели child.chs node.js Firebase оставались активными, и поэтому вы не получите сообщения 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);
}
});
}
Это было очень полезно. Я бы только отметил, что я изменил setInterval на setTimeout, потому что у меня были проблемы с загрузкой каждой страницы, создавая новый повторяющийся загрузчик страниц, умножая, пока я не начал получать ошибки Heroku. – ed94133
Есть много услуг хостинга там. Наверное, слишком много, чтобы упомянуть. Обычно люди также используют очередь firebase, чтобы делать то, о чем вы говорите. https://github.com/firebase/firebase-queue/ –