Как часто клиент веб-чата должен проверять наличие обновлений?

StackOverflow https://stackoverflow.com/questions/1829491

  •  11-09-2019
  •  | 
  •  

Вопрос

Я разрабатываю функцию веб-чата для приложения, которое будет работать наподобие facebook chat или google talk внутри gmail.Мне интересно, есть ли у кого-нибудь какие-либо советы о том, как часто следует проверять наличие обновлений?Каждые 2 секунды?Каждые 5 секунд?10 секунд?

Кроме того, должен ли я вызывать setTimeout в функции обратного вызова setTimeout или в обратном вызове ajax-запроса на обновления?В принципе, должно ли быть n секунд между вызовами или n секунд между завершением последнего запроса и началом следующего?

Спасибо

Это было полезно?

Решение

Вы могли бы использовать что-то вроде Комета (ОН же обратный AJAX), чтобы иметь постоянное соединение вместо того, чтобы пинговать сервер несколько раз.

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

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

Я бы сделал это динамичным.Определите некоторый диапазон, из которого вы не хотите выходить, например, от 2 до 10 секунд, и начните с некоторой средней точки, скажем, с 5 секунд.Если ваши опросы всегда возвращают новые сообщения, сократите период ожидания до минимума.Если опросы начнут возвращаться пустыми, увеличьте их количество до вашего максимума.Это даст вам справедливый баланс между оперативностью реагирования, когда это необходимо, и предоставлением вашему серверу перерыва, когда ничего особенного не происходит.

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

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

Для чата, основанный на событиях, это идеальный способ, имхо.

Как бы часто он ни обновлялся.

Это означает, что вы можете профилировать свою собственную систему и определять оптимальное время для проверки наличия обновлений в зависимости от загрузки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top