2016-06-24 11 views
1

Nehmen wir an, ich habe einen node.js Server von New York, und ich habe einen Client von Kalifornien mit einem Web-Browser angeschlossen. Wie vernünftigerweise kann ich Date.now() erwarten, das vom Client aufgerufen wird, Date.now(), das von node.js auf dem Server aufgerufen wird, innerhalb von ~ 50-100 ms abzugleichen (vorausgesetzt, sie werden genau zum selben Zeitpunkt aufgerufen)? Theoretisch sollte Date.now() immer über Maschinen und Zeitzonen hinweg konsistent sein, da Date.now() "die Anzahl der seit dem 1. Januar 1970 00:00:00 UTC verstrichenen Millisekunden zurückgibt", oder?Javascript Date.now() Konsistenz über Maschinen/Zeitzonen

+0

versuchen Sie, cleint und server date mit einigen percision/error übereinstimmen? –

+0

sind client_date und Serverdaten nahe genug mit einer Differenz von 50 - 100 ms? –

+1

Die Uhr des Client-Computers kann jederzeit eingestellt werden. Es ist unvernünftig zu erwarten, dass sie irgendwie genau synchronisiert sind. – JJJ

Antwort

3

Nein, Sie können nicht unbedingt davon ausgehen, dass die Client- und Serverzeit synchronisiert sind.

Einer der Gründe dafür ist Date.now() basiert auf der Systemzeit des Betriebssystems des Benutzers. Sie haben keine Kontrolle darüber, die Zeit ist vielleicht richtig, vielleicht ein bisschen oder sogar völlig falsch.

können Sie versuchen, dass Sie sich:

> Date.now() 
1466809144962 

> Date.now() 
1403650777388 

Ich lief Date.now() zweimal, einmal mit der richtigen Zeit in Windows festgelegt. Dann habe ich das Jahr meiner Systemuhr auf 2014 umgestellt und lief wieder Date.now().

Verlassen Sie sich nie auf die Richtigkeit der Informationen, die unter Kontrolle des Benutzers ohne serverseitige Validierung sind.

+0

Warum der Downvote? – Timo