티스토리 뷰

728x90
반응형

What?

javascript 에서 날짜/시간을 계산할 때 사용하는 Date()는 Client Local Time 이기 때문에
디바이스, 네트워크 등 환경에 따라 차이가 있다.
Timer, Count Down 서비스 구현 시 서버 시간 기준으로 구현하려면 서버 시간을 동기화 해야하는데
1초마다 서버 시간을 동기화하는 것은 비효율적이다.

Solution

최초에 서버 시간을 불러와서 Local Time 과 차이를 계산해두고,
1초마다 시간을 계산할 때 Local Time에 차이값을 추가하여 계산해주면 서버 시간과 차이를 보정할 수 있다.

  • 서버 시간을 받아오는 네트워크 시간에 차이가 있기 때문에 1~2초 오차가 날 수 있다.
const serverTime = [서버에서 가져온 시간];
const gabTime = new Date().getTime() - serverTime.getTime();        //millisconds로 계산

setInterval(function() {
    let localTime = new Date(new Date.getTime() - gabTime);
    /* Timer Logic */
    }, 1000);

Reference

https://stackoverflow.com/questions/5357719/how-to-sync-a-javascript-countdown-with-server-time

728x90
반응형

'Javascript' 카테고리의 다른 글

script 태그 위치  (0) 2022.09.07
jQuery 스크롤 이동  (0) 2022.05.02
https 프로토콜 iframe 주의  (0) 2021.07.19
setTimeout()  (0) 2020.12.23
&(document).on  (0) 2020.12.23
반응형
300x250