반응형
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 상태로 들어갈 일은 없을 것 같다. 다만 응답이 조금 느린 부분은 어쩔 수 없을 것 같다.
반응형
'Node.js' 카테고리의 다른 글
[Node.js] 기존 프로젝트에 Swagger 연동하기 (0) | 2021.04.28 |
---|---|
[Node.js] Cheerio 모듈로 크롤링 시 주의사항 (0) | 2019.04.09 |
[Node.js] ES6 문법 실행하기 (0) | 2019.02.25 |
[Node.js] Gulp 따라해보기 - (1) (0) | 2019.02.20 |