Node.JS-Modul zum Abrufen der aktuellen Uhrzeit von NTP-Servern und zum Zurückgeben von Offset-Informationen.
NTP erfordert UDP, das im Browserkontext nicht verfügbar ist!
# using Yarn
$ yarn add ntp-time-sync
# using NPM
$ npm install ntp-time-sync
Erwägen Sie die Verwendung der Bibliothek als Singleton, damit nicht jeder Aufruf von getTime
neue NTP-Pakete auslöst. Die Bibliothek selbst verwaltet die minimalen/maximalen Abfragezeiten.
Es werden mehrere Anfragen an mehrere NTP-Zeitserver gesendet und die Antworten werden aggregiert.
// 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()
gibt ein Promise
-Objekt zurück, das schließlich mit einem Objekt aufgelöst wird, das die folgenden Informationen enthält:
Eigentum | Beschreibung |
---|---|
now | Aktuelle NTP-Zeit („Echtzeit“) |
offset | Berechneter Offset zwischen lokaler Systemzeit und NTP-Zeit |
<ntpTimeSyncInstance>.now()
gibt ein Date
Objekt zurück, das die korrekte Zeit für den Moment enthält, als die Funktion aufgerufen wurde. Im Gegensatz zu getTime()
, das die korrekte Zeit für den Moment zurückgibt, in dem das Versprechen aufgelöst wird.
Sie können benutzerdefinierte Optionen an den Konstruktor von NtpTimeSync
oder NtpTimeSync.getInstance(options)
übergeben. Diese werden mit den folgenden Standardwerten zusammengeführt:
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" )
}
} ;