Node.js
[Node.js] Heroku FreeDyno 계속 켜진 상태로 유지하기
AntDeveloper
2019. 7. 2. 11:25
반응형
Heroku FreeDyno 서버를 이용해보신 분들은 알겠지만 접속이 없다면 한 5~15분 내로 서버가 sleep 상태로 들어간다.
개인적으로 테스트해본 결과 Dyno 안에서 크론으로 작업을 띄우거나 웹소켓 연결이 되더라도 서버가 sleep 상태로 들어가는 것을 막을 수는 없고 무조건 해당 서버로 웹 연결 요청이 있어야 sleep 상태로 안 들어가게 된다.
만약 인터넷과 연결된 안 쓰는 컴퓨터 혹은 NAS가 있다면 강제로 Heroku FreeDyno가 sleep으로 들어가는 것을 막을 수 있다. 그 소스는 다음과 같다.
const cron = require('node-cron');
const request = require('request');
const url = '접속할 서버의 웹페이지 경로';
// 3분 주기로 해당 웹서버에 요청
var task = cron.schedule('*/3 * * * *', () => {
console.log(url + ' try');
request(url, function (error, response, body) {
if (response && response.statusCode == 200) {
console.log(url + ' connected successfully');
return;
}
console.error(url + ' fail to connect');
});
}, {
scheduled: false
});
task.start();
console.log('task start');
필요한 모듈은 node-cron과 request이며 해당 모듈을 설치한 뒤 위의 코드를 실행하면 해당 웹서버가 sleep 상태로 들어갈 일은 없을 것 같다. 다만 응답이 조금 느린 부분은 어쩔 수 없을 것 같다.
반응형