Различное время клиента и сервера при локальном использовании Node.js

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

иногда сообщение было получено сервером до того, как оно было отправлено клиентом Нет, это невозможно
Muhammad Usman 08.05.2018 17:45

Не ожидайте, что Date.now будет точным. Большинство браузеров пропускают несколько миллисекунд ...

Jonas Wilms 08.05.2018 17:46
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
169
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

 real time: 1000ms
 js time: 1000ms

 travel time: 5ms

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

 difference: -2ms

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

Другие вопросы по теме