ntp time sync
0.4.1
NTP 서버에서 현재 시간을 가져오고 오프셋 정보를 반환하는 Node.JS 모듈입니다.
NTP에는 브라우저 컨텍스트에서 사용할 수 없는 UDP가 필요합니다!
# using Yarn
$ yarn add ntp-time-sync
# using NPM
$ npm install ntp-time-sync
getTime
호출할 때마다 새 NTP 패키지가 실행되지 않도록 라이브러리를 싱글톤으로 사용하는 것을 고려하세요. 라이브러리 자체는 최소/최대 폴링 시간을 관리합니다.
여러 NTP 시간 서버에 대한 여러 요청이 실행되고 응답이 집계됩니다.
// ES6:
import { NtpTimeSync } from "ntp-time-sync" ;
// pre-ES6:
// const NtpTimeSync = require("ntp-time-sync").NtpTimeSync;
const timeSync = NtpTimeSync . getInstance ( ) ;
// request 1
timeSync . getTime ( ) . then ( function ( result ) {
console . log ( "current system time" , new Date ( ) ) ;
console . log ( "real time" , result . now ) ;
console . log ( "offset in milliseconds" , result . offset ) ;
} )
// request 2, will use cached offset from previous request
timeSync . getTime ( ) . then ( function ( result ) {
console . log ( "current system time" , new Date ( ) ) ;
console . log ( "real time" , result . now ) ;
console . log ( "offset in milliseconds" , result . offset ) ;
} )
// ES2017 style
const result = await timeSync . getTime ( ) ;
console . log ( "real time" , result . now ) ;
<ntpTimeSyncInstance>.getTime()
다음 정보를 포함하는 객체로 최종적으로 해결될 Promise
객체를 반환합니다.
재산 | 설명 |
---|---|
now | 현재 NTP 시간("실시간") |
offset | 로컬 시스템 시간과 NTP 시간 사이의 계산된 오프셋 |
<ntpTimeSyncInstance>.now()
함수가 호출된 순간의 정확한 시간을 포함하는 Date
객체를 반환합니다. Promise가 해결되는 순간의 정확한 시간을 반환하는 getTime()
과 대조적입니다.
NtpTimeSync
또는 NtpTimeSync.getInstance(options)
생성자에 사용자 정의 옵션을 전달할 수 있습니다. 이는 다음 기본값과 병합됩니다.
const defaultOptions = {
// list of NTP time servers, optionally including a port (defaults to 123)
servers : [
"0.pool.ntp.org" ,
"1.pool.ntp.org" ,
"2.pool.ntp.org" ,
"3.pool.ntp.org"
] ,
// required amount of valid samples in order to calculate the time
sampleCount : 8 ,
// amount of time in milliseconds to wait for a single NTP response
replyTimeout : 3000 ,
// defaults as of RFC5905
ntpDefaults : {
port : 123 ,
version : 4 ,
tolerance : 15e-6 ,
minPoll : 4 ,
maxPoll : 17 ,
maxDispersion : 16 ,
minDispersion : 0.005 ,
maxDistance : 1 ,
maxStratum : 16 ,
precision : - 18 ,
referenceDate : new Date ( "Jan 01 1900 GMT" )
}
} ;