Разное время клиента и сервера при локальном использовании Node.js - PullRequest
0 голосов
/ 08 мая 2018

У меня есть сервер узлов, работающий локально, и я подключаюсь к этому серверу через веб-браузер. Я использую websocket для связи между клиентом и сервером. Я хочу измерить точное время отправки сообщения websocket на сервер и с сервера. Я использую функцию javascript Date.now (), но проблема в том, что в моих результатах иногда сообщение было получено сервером до того, как оно было отправлено клиентом. Я думаю, что есть разница между клиентом "часы" и сервером "часы". Но есть на одной машине. Буду благодарен за объяснения и ссылки на ресурсы.

1 Ответ

0 голосов
/ 08 мая 2018

Как отметил Джон Резиг в одной из статей своего блога время javascripts не является точным. Часы, к которым вы можете получить доступ с помощью JavaScript, «тикают» каждые несколько миллисекунд. Это означает, что точное время может быть примерно на 7 мсек. Теперь, если ваш запрос занимает меньше этого небольшого промежутка времени (что может произойти, если он остается на локальном хосте), он может выглядеть так, как если бы он был получен до его отправки.

 real time: 1000ms
 js time: 1000ms

 travel time: 5ms

 real time: 1005ms
 js time: 998ms // inaccuracy

 difference: -2ms

Мы ничего не можем сделать, чтобы улучшить это, поскольку performance.now() был отключен по соображениям безопасности. Так что единственное, что мы можем сделать, это ввести задержку в сети :), но тогда время часов, вероятно, больше не будет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...