webSocket

WebSocket作为HTML5的一部分,提供了一种服务器与客户端双向通信的机制。它通过HTTP建立连接,然后转换为全双工的WebSocket协议。相较于HTTP的轮询、长连接和长轮询,WebSocket减少了不必要的请求,降低了服务器压力,适合实时性要求高的应用场景。WebSocket连接创建涉及Upgrade头信息和Sec-WebSocket-Key等,客户端和服务器API简单易用。
摘要由CSDN通过智能技术生成

在这里插入图片描述
webSocket

1.为什么会有webSocket的出现?

默认HTTP协议只支持请求响应模式,也就是常说的请求-响应模式,这样做可以简化Web服务器,减少服务器的负担,加快响应速度。这种机制对于信息变化不是特别频繁的应用尚能相安无事,但是对于那些实时要求比较高的应用来说,比如说在线游戏、在线证券、设备监控、新闻在线播报、RSS 订阅推送等等,当客户端浏览器准备呈现这些信息的时候,这些信息在服务器端可能已经过时了。所以我们需要一种服务端可以主动向客户端推送消息的技术,来保证消息的实时性。但是在webSocket出现之前,实时获取消息也是有几种解决方案的。

轮询:

轮询是比较常用并且简单的实现实时消息的方式,简单来说就是客户端不断向服务端请求数据,这个频率可能是一分钟甚至一秒一次,以此保持尽可能实时的获取最新数据。

以Ajax+轮询的方式,实现消息的获取

	setInterval('send()', 1000);//轮询执行,1s一次
	
	function send() {
		$.ajax({
			url : '../case/quatrzLoad.ajax',
			type : 'post',
			dataType : 'JSON',
			async : false,
			cache : false,
			data : {},
			success : function(result) {
				if (result.success) {
					//右下角消息提醒
					bottomRight();
					//声音提醒
					playSound("../audio/remind.mp3");
				}

			}
		});
	}

轮询的方式适用于用户量比较少的应用,而且实现简单。但是频繁的请求会给服务器带来很大的压力。

长连接:

在页面里嵌入一个隐蔵iframe,将这个隐蔵iframe的src属性设为对一个长连接的请求或是采用xhr请求,服务器端就能源源不断地往客户端输入数据。 优点:消息即时到达,不发无用请求;管理起来也相对便。 缺点:服务器维护一个长连接会增加开销。

长轮询:

客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。 优点:在无消息的情况下不会频繁的请求,耗费资小。 缺点:服务器hold连接会消耗资源,返回数据顺序无保证,难于管理维护。

2.webSocket是什么?

WebSocket同样是HTML 5规范的组成部分之一。WebSocket 相较于上述几种连接方式,实现原理较为复杂,用一句话概括就是:客户端向 WebSocket 服务器通知(notify)一个带有所有 接收者ID(recipients IDs)的事件(event),服务器接收后立即通知所有活跃的(active)客户端,只有ID在接收者ID序列中的客户端才会处理这个事件。由于 WebSocket 本身是基于TCP协议的,所以在服务器端我们可以采用构建 TCP Socket 服务器的方式来构建 WebSocket

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值