nest api 서버 개발 프로젝트
[typescript/nestjs] (개인저장용)스케쥴에 맞는 시간 동기화 로직 구현(server)
개발자 고포고
2021. 12. 7. 19:11
반응형
[typescript/nestjs] (개인저장용)스케쥴에 맞는 시간 동기화 로직 구현(server)
getTime(): number {
//서버 시간
const severTime = new Date();
//스케쥴을 시작할 시간
const startTime = new Date(Date.parse('Tue, 07 Dec 2021 05:00:00 GMT'));
//총 33초의 스케쥴이 존재 IDLE-5 AR-10 PRE_EVENT-4 EVENT-10 POST_EVENT-4 합 33 초
const ScheduleMaxTime = 33;
while (true) {
//startTime에 ScheduleMaxTime을 돌려 현재 서버시간에 맞춘다.
startTime.setSeconds(startTime.getSeconds() + (ScheduleMaxTime-1));
if (startTime >= severTime) {
// dt.setSeconds(-ScheduleMaxTime);
//서버시간에 맞춘후 디테일을 위해 밀리세컨단위까지 추가해준다
startTime.setMilliseconds(
startTime.getMilliseconds() + severTime.getMilliseconds(),
);
break;
}
}
const serverTime_ticks = severTime.getTime();
const startTime_ticks = startTime.getTime();
//서버시간과 스케쥴 시간의 차이를 구한다.
const current_play_time = startTime_ticks - serverTime_ticks;
const returnValue =
32 -
parseFloat(
new Date(current_play_time).getSeconds() +
'.' +
new Date(startTime).getMilliseconds(),
);
return returnValue;
}
다음과 같이
스케쥴 : IDLE:5초 / AR:10초 / PRE_EVENT:4초 / EVENT:10초 / POST_EVENT:4초 / 총 33 초
를 기준으로 현재 스케쥴 위치를 가져오는 알고리즘이다.
샘플 클라이언트의 구현도 추가하겠다.
#typescript #nestjs #동기화 #sync #schedule #server
반응형