![](https://csdnimg.cn/release/download_crawler_static/10650447/bg3.jpg)
客户端实现的就是用一种普通轮询的结果,比较简单。利用 setInterval 不间断的刷新
来获取服务器的资源,这种方式的优点就是简单、及时。缺点是链接多数是无效重复
的;响应的结果没有顺序(因为是异步请求,当发送的请求没有返回结果的时候,后
面的请求又被发送。而此时如果后面的请求比前面的请求要先返回结果,那么当前面
的请求返回结果数据时已经是过时无效的数据了);请求多,难于维护、浪费服务器
和网络资源
2、长链接
在上面的轮询解决方案中,由于每次都要发送一个请求,服务端不管数据是否发生变
化都发送数据,请求完成后连接关闭。这中间经过的很多通信是不必要的,于是又出
现了长轮询方式。这种方式是客户端发送一个请求到服务器,服务器查看客户端请求
的数据是否发生了变化(是否有最新数据),如果发生变化则立即响应返回,否则保
持这个连接并定期检查最新数据,直到发生了数据更新或连接超时。同时客户端连接
一旦断开,则再次发出请求,这样在相同时间内大大减少了客户端请求服务器的次数。
所谓长连接,就是要在客户端与服务器之间创建和保持稳定可靠的连接。其实它是一
种很早就存在的技术,但是由于浏览器技术的发展比较缓慢,没有为这种机制的实现
提供很好的支持。所以要达到这种效果,需要客户端和服务器的程序共同配合来完成。
通常的做法是,在服务器的程序中加入一个死循环,在循环中监测数据的变动。当发
现新数据时,立即将其输出给浏览器并断开连接,浏览器在收到数据后,再次发起请
求以进入下一个周期。
简单来说:长连接、长轮询就是客户端不停的向服务器发送请求以获取最新的数据信
息。这里的“不停”其实是有停止的,只是我们人眼无法分辨是否停止,它只是一种快
速的停下然后又立即开始连接而已。实现代码如下
<body>
日期:<input type="text" id="date" style="width:800px; height=500px"/>
</body>
$(document).ready(function() {
getTime()
})
//获取服务端时间
function getTime(){
$.post("/getdate",{},function(data){
$("#date").val(data);
getTime();//返回成功之后,继续请求后端的服务