Опрос сервера с помощью JavaScript

какова наилучшая практика для сервера опроса с JavaScript для приложения, которое должно очень быстро обновлять данные? Я использую jQuery для front-end и Java Spring Framework для бэкэнда.

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

3 ответов


вы можете использовать функции Ajax jQuery чтобы опрашивать сервер каждую секунду или около того. После этого сервер может ответить с инструкциями к браузеру в близко реальное временя.

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

цитирую Comet Daily: Техника Длительного Опроса:

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

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

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

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


Я второе предложение Даниэля использовать длинн-опрос или нажим. Проверьте

CometD-это масштабируемая http-шина маршрутизации событий, которая использует шаблон технологии Ajax Push, известный как Comet. Термин "Комета" был придуман Алексом Расселом в его post Comet: Low Latency Data для браузера.

У них есть страница, объясняющая, как получить эту работу с Весна:


С 2018 года вы должны использовать функцию fetch с синтаксисом promise:

<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>