websocket同http和https一样,属于tcp
基础上的应用层的协议;需要三次握手四次挥手
的过程
一般来说,我们使用的http协议只能由客户端发起请求,而服务端无法直接主动进行数据推送,这就导致了如果服务端有持续的变化(如聊天室)而客户端获取起来较为复杂(如实时性和服务端压力等)。因此,websocket协议便应运而生
对于websocket协议来说,客户端和服务端都可以主动推送消息,其中消息内容可以时文本也可以是二进制数据。而且没有同源策略的限制,也不存在跨域问题
websocket协议的表示符号时ws(ws://xxxx.com);像https一样,如果加密的话,标识符就是wxs
websocket握手环节
握手环节:验证服务端是否支持websocket协议
1)创建连接,浏览器连接服务端,创建连接成功
2)浏览器生成一个随机字符串,浏览器存一份该随机字符串,同时发一份给服务端(基于http协议发到服务端,会把该字符串放在http请求头里发给服务端)
3)服务端收到随机字符串之后,让它跟魔法字符串(magic string,全球公认的固定字符串)拼接,然后再通过sha1算法进行加密然后再通过base64编码后,生成密文
4)服务端将密文返回给浏览器(该密文无法反解)
5)浏览器也将本地存的随机字符串与magic string进行拼接并加密编码之后得到一个密文
6)浏览器将服务端发来的密文与本地的密文进行对比、校验,若通过,则说明两端用的同一个magic string,即用的同一种加密手段,即可以判定服务端支持websocket协议,握手成功;若校验不通过,则代表服务端不支持websocket协议,握手失败