websocket基础

网友投稿 446 2022-10-14


websocket基础

浏览器如何和服务器保持实时通信呢?常用的有以下四种方案:

(1).ajax,每隔一定时间发送一次请求。

(2).长轮询,就是利用这种机制,基于HTTP 请求。

(4).websocket

Websocket协议和HTTP协议都位于网络中的应用层,都是应用层协议,而TCP则是位于传输层,属于传输层协议,并且WS和HTTP都是基于TCP实现的上层协议,与HTTP不同的是,WS可以使得客户端(广义客户端,包括浏览器)与服务器建立一个长链接全双工的通信信道,不仅使得客户端可以主动向服务器发送消息,也可以让服务器主动向客户端发送消息,由于是长链接通道所以每次消息的发送并不会反复创建、销毁链接。

需要注意的是,websocket链接的建立第一步是借助于HTTP协议实现的,后面才是真正的WS链接。ws链接建立时,里边有几个header如下要注意。

Connection: Upgrade   // 告诉服务器,这个链接要进行协议升级。实际上这个header平时用的更多时候,TA的值是赫赫有名的keep-aliveUpgrade: websocket    // 告诉服务器,具体想升级成websocket协议Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits    // 协议扩展类型Sec-WebSocket-Key: IhTmM/PyVb55uCkAU5Iw1Q==    // 传输给服务器的key,这个key的算是这样来的 客户端随机一坨字符,然后base64一下Sec-WebSocket-Version: 13   // 客户端支持WebSocket的版本Sec-Websocket-Accept和Sec-WebSocket-Key具体是怎么个联系呢?这两个玩意实际上是WS进行握手的关键数据。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:WebRTC ICE 状态与提名处理
下一篇:解决feign微服务间的文件上传报错问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~