2016-02-02 3 views
6

Я работаю в режиме реального времени с помощью Node.js (v0.12.4) и Socket.io (1.3.2). В этом случае я сталкиваюсь с некоторой временной задержкой почти (100 мс), когда ответ исходит от Node.js к графическому интерфейсу (Socket.Io).Node.js to Socket.io Time Delay

У меня нет подсказки, почему существует временная задержка при испускании данных из Node.js в GUI (Socket.IO).

Это происходит на производственном участке. И мы попытались отладить это на месте производственного сервера также из-за латентности сети. Но такой же результат.

Пожалуйста, помогите мне в этом?

+0

Какой браузер вы используете (при условии, что клиент является веб-браузером). Какова конфигурация вашего сервера? Что вы уже пробовали для отладки? –

+0

Посмотрите на [socket.io debug] (http://socket.io/docs/logging-and-debugging/#) –

+0

Мы пробовали Chrome и Firefox. Оба браузера сталкиваются с задержкой. Мы добавили отметку времени перед выдачей данных из узла и после получения данных из графического интерфейса (socket.io). Разница во времени составляет более 100 мс – MadTech

ответ

5

Одна огромная вещь, которую нужно отметить, прежде чем делать следующее. При вычислении сроков с внутренней стороны (на стороне сервера) до лицевой части (на стороне клиента) вам необходимо запустить ее на том же компьютере, на котором используется тот же самый кристалл времени .

кварцевые хромированные часы даже на высококачественных материнских платах deffer друг от друга.

Если вы не нашли без задержки при расчете времени задержки от заднего конца (на стороне сервера) к переднему концу (на стороне клиента) на том же компьютерето задержка вы первоначально найден была вызвана либо подключение к сети или уважение в материнских платах хронометрические часы. Что бы устранить Node.js и Socket.io как причину задержки времени.

В основном вам нужно выяснить, где происходит задержка, прежде чем вы сможете решить проблему.

Что вам нужно сделать, это выяснить, что вызывает наибольший удар по производительности в вашем проекте. Для этого вам нужно будет выделить время, необходимое каждому процессу. Вам также необходимо измерить задержку времени от первоначального поиска данных до выпуска данных. Затем измерьте временную задержку каждой функции, метода и процесса. Попытайтесь изолировать проблему. Вы должны спросить, что занимает больше всего времени?

Чтобы узнать, откуда исходит ваш удар по производительности, вам необходимо сделать следующее.

  1. Узнайте как долго требуется для вашего кода получить информацию ему нужно.
  2. Узнайте как долго каждый процесс манипулирования информацией происходит, прежде чем он посылает данные т.е. функции/методы ...
  3. После того как информация рассылается найти, сколько времени требуется, чтобы получить информацию клиенту стороны и нагрузки.
  4. Добавьте все время вверх и убедитесь, что оно равно вашей задержке производительности, чтобы гарантировать, что у вас есть все данные, необходимые для изоляции утечки производительности.
  5. Закажите каждый способ, функцию, процесс ... по его временной задержке, отнимающей много времени, до наименьшего времени.Когда вы найдете то, что процессы вызывают наибольшие задержки вы будете тогда быть в состоянии решить эту проблему ... Или, по крайней мере, изучить реальные решения ...

Вот некоторые инструменты, которые можно использовать для измерения производительности в течение ваш код.

Первый: У Chrome есть действительно хороший инструмент, который позволяет вам видеть производительность каждой части исполняемого кода.

Второе:performance-now node package. You can use it for dev performance testing.

Третье:Stack overflow post on measuring time/performance in js.

Четвертое: вы можете использовать такие вещи, как console.time()

0

я обнаружил, что время задержки, где это происходит.

Однажды я отправил данные из сокета клиента в узел, я покажу какое-то предупреждающее сообщение («Обработанные данные»). Предупреждающее сообщение, требующее времени для визуализации в графическом интерфейсе.

Это предупреждающее сообщение, блокирующее данные ответа от узла к гнезду.

Спасибо за помощь. Ребята.