Опрос сервера с помощью JavaScript - PullRequest
25 голосов
/ 27 августа 2010

Какова оптимальная практика для опроса сервера с JavaScript для приложения, которому необходимо очень быстро обновлять данные?Я использую jQuery для внешнего интерфейса и Java Spring Framework для внутреннего.

Примером обновленных данных может быть список элементов, которые обновляются очень быстро (каждую 1 секунду).

Ответы [ 3 ]

39 голосов
/ 27 августа 2010

Возможно, вы захотите использовать функции jjuery Ajax для опроса сервера каждую секунду или около того.Затем сервер может отправлять инструкции браузеру практически в режиме реального времени.

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

Цитирование Ежедневная комета: Техника длинного опроса :

Техника кометы длинного опроса - это метод, который оптимизирует традиционный опрос для уменьшения задержки.

Традиционный опрос отправляет XMLHttpRequest на сервер через фиксированные интервалы.Например, открывайте новый XMLHttpRequest каждые 15 секунд, получайте немедленный ответ и закрывайте соединение.

Длинный опрос отправляет запрос на сервер, но ответ не возвращается клиенту до тех пор, покадоступен.Как только соединение закрывается, либо из-за того, что клиент получил ответ, либо по истечении времени ожидания запроса, новое соединение инициируется.Результатом является значительное снижение задержки, поскольку на сервере обычно установлено соединение, когда он готов вернуть информацию для возврата клиенту.

В дополнение к вышесказанному я также предлагаю вам проверитьИз принятого ответа на следующий пост переполнения стека для подробного описания метода длинных опросов:

3 голосов
/ 27 августа 2010

I второй Даниэль предлагает использовать лонг-опрос или пуш. Проверить

CometD - это масштабируемая шина маршрутизации событий на основе HTTP, которая использует шаблон технологии Ajax Push, известный как Comet. Термин «Комета» был придуман Алексом Расселом в его посте «Комета: данные с низкой задержкой для браузера».

У них есть страница, объясняющая, как заставить это работать с Spring:

2 голосов
/ 03 апреля 2018

Начиная с 2018 года, вы должны использовать функцию извлечения с синтаксисом обещания:

<script type="text/javascript">
setInterval(function(){
  fetch("your_serverside_script.php") // Any output from the script will go to the "result" div
  .then(response => response.text())
  .catch(error => document.getElementById("result").innerHTML = error)
  .then(response => document.getElementById("result").innerHTML = response)
}, 1000); // Poll every 1000ms
</script>

<div id="result">result will appear here</div>
...