您的位置:首页 > 其它

Websocket原理

2017-08-06 15:31 106 查看
WebSocket是html5出的协议,是基于http协议的。

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

GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket //
Connection: Upgrade //Upgrade和Connection是Websocket的核心,声明了发起的是Websocket协议
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13 //告诉服务器所需要的版本
Origin: http://example.com然后服务器会返回下列东西,表示成功建立Websocket连接 HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-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请求,就可以做到源源不断的信息传送了。(在程序设计中,这种设计叫做回调,即:你有信息了再来通知我,而不是我傻乎乎的每次跑来问你 )
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: