websocket是一种新型的协议,协议标识符为ws,加密即为wss
简单说来就是一种持续的http服务,但不需要多次请求,仅需要进行一次通讯,后期使得服务端自动回应
在http1.0中,http的生命周期是依靠一个request和一个respone来界定,收到一次响应后就结束了,而在http1.1中加入了keep-live,增加访问时间,发送多次request请求,接受多个respone
一个普通的websocket包会在请求头中加入
Upgrade: websocket
Connection: Upgrade
表示自己发送的是一个websocket包
然后通过
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
表明自己需要的信息
sec-websocket-protocol表示自己需要的服务
sec-websocket-version表示websocket的版本
Sec-WebSocket-Key表示自己的加密信息
然后服务端会返回一个数据包
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat
Sec-WebSocket-Accept表示服务端收到信息后返回的加密的信息,是 Sec-WebSocket-Key”加上一个特殊字符串 258EAFA5-E914-47DA-95CA-C5AB0DC85B11,然后计算 SHA-1 摘要,之后进行 BASE-64 编码,将结果做为Sec-WebSocket-Accept 头的值,返回给客户端。
Sec-WebSocket-Protocol表示请求的服务
这样就会建立一个websocket服务,获得到自己需要的资源