Опрос сервера с помощью 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>