消息推送

来源:互联网 发布:ip地址是阿里云 编辑:程序博客网 时间:2024/05/01 17:37

1、WebSocket协议是基于TCP的一种新的网络协议。
它实现了浏览器与服务器全双工(full-duplex)通信——服务器主动发送信息给客户端。
Websocket是一个持久化的协议

2、产生原因
HTTP协议只能实现单向的通信。有一种技术都是轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的HTTP 请求的模式带来很明显的缺点 – 浏览器需要不断的向服务器发出请求。由于客户端和服务器之间的连接需要身份验证,会产生频繁的身份验证以及重复的信息发送,导致时间的浪费,性能的降低。
eg: ajax轮询 ,让浏览器隔个几秒就发送一次请求,询问服务器是否有新信息。

除了轮询,还有长连接(long polling)的方式,即HTTP可以用阻塞的方式来模拟双向通信(服务端把所需信息准备好了之后再通知客户端取用),但客户端和服务器之间的连接仍然是一次性的,而且服务器仍然不能主动发起请求,因此仍然具有HTTP的被动性。
eg:long poll long poll采用轮询的方式,不过采取的是阻塞模型(一直打电话,没收到就不挂电话),也就是说,客户端发起连接后,如果没消息,就一直不返回Response给客户端。直到有消息才返回,返回完之后,客户端再次建立连接,周而复始。场景再现

由于WebSocket是真正意义上的双向通信,它完全减少了频繁的身份验证等不必要的开销。WebSocket可以看作HTTP上的一个扩展,用到了HTTP的内容,但是和HTTP协议有着本质上的不同。

3、WebSocket实现原理
在实现websocket连线过程中,需要通过浏览器发出websocket连线请求,然后服务器发出回应,这个过程通常称为“握手” (handshaking)。在 WebSocket API,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。这种设计叫回调,即:建立连接之后,你有信息了再来通知我,而不是我傻乎乎的每次跑来问你。在此WebSocket 协议中,为我们实现即时服务带来了两大好处:
1. Header
互相沟通的Header是很小的-大概只有 2 Bytes
2. Server Push
服务器的推送,服务器不再被动的接收到浏览器的request之后才返回数据,而是在有新数据时就主动推送给浏览器。

0 0
原创粉丝点击