Ajax轮询和WebSocket

在WebSocket出现之前的我们主要是通过什么实现实时信息传递呢?

主要使用Ajax轮询、long poll(Ajax长查询)
Ajax轮询——“定时的通过Ajax查询服务端”:
浏览器按规定的时间向服务器发送请求,服务器接受到请求信息后返回响应信息并关闭连接。


$(function() {
//按规定的时间发送请求给服务器
        setInterval("isHave();",5000);
});
 
function isHave(){
	$.ajax({
		url : "localhost/isHave",
		data : {},
		datatype: "json",
		type : "post",	
		success : function(result) {	
			console.log(result);
		}
	});
}

Ajax长轮询——不间断的通过Ajax查询服务端"

    var getting = {

        url:'server.php',

        dataType:'json',

        success:function(res) {

         console.log(res);

         $.ajax(getting); //关键在这里,回调函数内再次请求Ajax

	}        
        //当请求时间过长(默认为60秒),就再次调用ajax长轮询
        error:function(res){
        $.ajax($getting);
        }

};
$.ajax(getting);

在这里插入图片描述
图中有两次请求,第一次很快返回了结果,然后不间断的立即发送第二次请求,但是第二次请求没有获得数据,所以请求迟迟没有返回(被挂在服务器了,但只要有数据就会再次返回),如果第二次的请求返回数据后,第三次请求旋即会立刻发出,这种技术就称为Ajax 长轮询。

但是使用这两种方式都存在一个问题,每个请求都会不断地建立HTTP连接,然后等待服务端处理,可以体现HTTP协议的一个特点,被动性,服务端不能主动联系客户端,只能有客户端发起。
这个时候WebSocket便以及其耀眼的方式出现了。

什么是WebSocket?

WebSocket是HTML5中开始出现、基于Tcp的一种持久协议(相对于HTTP协议而言),它可以实现客户端与服务器端的通信,实现服务器的推送功能。

WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输

在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送

WebSocket API的优势在于服务器和客户端可以在固定的时间范围内的任意时刻,相互推送消息。在建立连接之后,服务器可以主动传送数据给客户端

·WebSocket 并不限于以AJAX(或XHR)方式通信,因为Ajax技术需要客户端发起请求,而WebSocket服务器和客户端可以彼此相互推送信息。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值