Websocket原理

来源:互联网 发布:03年搞笑网络歌曲 编辑:程序博客网 时间:2024/06/05 11:27

WebSocket是html5出的协议,是基于http协议的。

我们先看一个典型的Websocket握手:

GET /chat HTTP/1.1Host: server.example.comUpgrade: websocket                      //Connection: Upgrade                     //Upgrade和Connection是Websocket的核心,声明了发起的是Websocket协议Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==Sec-WebSocket-Protocol: chat, superchatSec-WebSocket-Version: 13                 //告诉服务器所需要的版本Origin: http://example.com
然后服务器会返回下列东西,表示成功建立Websocket连接

HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=Sec-WebSocket-Protocol: chat
我们知道AJAX轮询是让客户端隔几秒发送一次请求,询问服务器是否有新信息,long pool采用的也是采用轮询方式,不过采用了阻塞模型(一直打电话,没有收到就不挂电话),这两种方式都非常消耗资源。

而Websocket协议下,服务器端可以主动推送信息给客户端。情景如下:

客户端:啦啦啦,我要建立Websocket协议,需要的服务:chat,Websocket协议版本:17(HTTP Request)

服务端:ok,确认,已升级为Websocket协议(HTTP Protocols Switched)

客户端:麻烦你有信息的时候推送给我噢。。

服务端:ok,有的时候会告诉你的。

服务端:balabalabalabala

服务端:哈哈哈哈哈啊哈哈哈哈

服务端:笑死我了哈哈哈哈哈哈哈

就变成了这样,只需要经过一次HTTP请求,就可以做到源源不断的信息传送了。(在程序设计中,这种设计叫做回调,即:你有信息了再来通知我,而不是我傻乎乎的每次跑来问你 )




原创粉丝点击