如何使用JavaScript定期向服务器发出请求以快速刷新数据?我在前端使用jQuery,后端使用Java Spring Framework。
示例包括需要快速更新的项目列表(每秒钟更新一次)。
如何使用JavaScript定期向服务器发出请求以快速刷新数据?我在前端使用jQuery,后端使用Java Spring Framework。
示例包括需要快速更新的项目列表(每秒钟更新一次)。
您可能想使用jQuery的Ajax函数每秒钟轮询服务器。然后,服务器可以在几乎实时地向浏览器发送指令。
您还可以考虑使用长轮询而不是上述方法,以降低延迟而不增加轮询频率。
长轮询Comet技术是一种优化传统轮询以减少延迟的技术。
传统轮询以固定间隔向服务器发送
XMLHttpRequest
。例如,每15秒打开一个新的XMLHttpRequest
,接收即时响应,然后关闭连接。长轮询发送请求到服务器,但是直到有响应可用才将其返回给客户端。一旦连接关闭,无论是由于客户端收到响应还是请求超时,都会启动新的连接。结果是显着降低延迟,因为当服务器准备好返回信息返回到客户端时,通常已经建立了连接。
除以上内容外,我还建议您查看以下Stack Overflow帖子的被接受答案,以获取有关长轮询技术的详细描述:
截至2018年,您应该使用具有Promise语法的fetch函数:
<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>
我建议使用长轮询或推送。请查看:
CometD是一种可扩展的基于HTTP的事件路由总线,使用称为Comet的Ajax推送技术模式。术语“Comet”是由Alex Russell在他的文章“Comet:浏览器的低延迟数据”中创造的。
他们有一个页面说明如何在Spring中使用它: