websocket:websocket是HTML5的协议,和http协议是没有关系的
HTTP协议:不支持持久链接,http的生命周期通过request来界定,分为两个版本 1.0版本--一次request,一次response,http协 议1.0就结束了。
1.1版本--增加属性keep-alive,在一次http连接中,可以发送多次request,response,但都是一次request,一次response,并且response不能主动发起,客服端发送了request,才能返回一个response。
Websocket协议:websocket借用了一部分http协议来完成握手,在原有的http握手的中增加了两个属性
Upgrade: websocket
Connection: Upgrade
这个就是Websocket的核心了,告诉 Apache
、 Nginx
等服务器:注意啦,我发起的是Websocket协议
Upgrade: websocket
Connection: Upgrade
依然是固定的,告诉客户端即将升级的是 Websocket
协议,而不是mozillasocket,lurnarsocket或者shitsocket。
然后, Sec-WebSocket-Accept
这个则是经过服务器确认,并且加密过后的 Sec-WebSocket-Key
。 服务器:好啦好啦,知道啦,给你看我的ID CARD来证明行了吧。。
后面的, Sec-WebSocket-Protocol
则是表示最终使用的协议。
至此,HTTP已经完成它所有工作了,接下来就是完全按照Websocket协议进行了。具体的协议就不在这阐述了。
补充知识:long poll--采取的是阻塞模型,发起一次request,没有response就一直保持连接,知道有resposne返回,然后再此建立连接,缺点:服务器会有很多连接,并发大。
ajax轮询:一直请求服务器,请求一次,返回一次,缺点:消耗资源,请求多。
而websocket服务端就可以主动推送信息给客户端,只要一次建立,就可以一直传递信息
核心区别:http协议,服务端想发送信息给客户端,必须客户端主动发起一次request,而websocket则只要连接建立,就可以随时给客户端发送消息。
https://promotion.aliyun.com/ntms/act/enterprise-discount.html?userCode=1qylypgj
【助力企业上云】性能级主机2-5折
阿里云活动,服务器便宜卖哦,通过此链接注册购买,可联系作者协助部署搭建服务器环境。QQ(814341142)