新睿云

> 知识库 > WebSocket协议介绍干货

WebSocket协议介绍干货

作者/来源:新睿云小编 发布时间:2020-02-17

WebSocket实现了客户端与服务器之间的长连接,这样服务器可以主动推送消息给客户端,有非常丰富的使用场景。如果没有Websocket协议,要想实现长连接,就需要采用Comet的方式,这种方式就是采用客户端定时http轮询或者iframe流,以此来保证一个长连接。

Comet的缺点:

客户端与服务器采用的还是http协议,双方需要频繁地通讯,这样对于服务器来说性能损耗很大。

http协议来做为长连接,网路传输效率相对较低。

WebSocket协议介绍:

Websocket协议主要分为两个部分:握手和数据传输。特别要提到的是,WebSocket在握手阶段使用的是http协议.

Websocket 

Websocket

WebSocket握手

客户端建立连接时,通过http发起请求报文。在请求头中,会有如下这些报文,Sec-WebSocket-Key用于安全校验,Sec-WebSocket-Key的值是随机生成的base64编码字符串。

Upgrade:websocket

Connection:Upgrade

Sec-WebSocket-Key:字符串

#指定子协议和版本号

Sec-WebSocket-Protocol:chat,superchat

Sec-WebSocket-Version:13

服务器收到字符串以后,与服务器生成的字符串相连接,形成新的字符串,然后新的字符串会进行sha1散列算法和base64编码,最后返回给客户端.

服务端处理完成以后,生成相应报文。报文告知客户端更新应用层协议为WebSocket协议。

Upgrade:websocket

Connection:Upgrade

Sec-WebSocket-Accept:字符串

Sec-WebSocket-Protocol:chat

客户端接收到服务端的响应报文以后,会对Sec-WebSocket-Key进行校验,校验成功以后,会开始数据传输。

WebSocket与http协议的比较优势:

客户端与服务端只需要建立一个tcp连接。

WebSocket服务端可以主动推送数据到客户端,这比http的请求相应模式更有优势。

WebSocket的协议头更轻量,减少了不必要的数据传输。

WS和WSS

WebSocket可以使用ws或wss来作为统一资源标志符,类似于HTTP或HTTPS。其中,wss表示在TLS之上的WebSocket,相当于HTTPS。默认情况下,WebSocket的ws协议基于Http的80端口;当运行在TLS之上时,wss协议默认是基于Http的443端口。说白了,wss就是ws基于SSL的安全传输,与HTTPS一样样的道理。所以,如果你的网站是HTTPS协议的,那你就不能使用ws://了,浏览器会block掉连接,和HTTPS下不允许HTTP请求一样.

如果你的服务是基于https的,那么客户端就需要使用WSS去进行连接。

使用客户端使用WSS连接不能使用IP的方式,需要使用域名进行连接。

使用WSS需要使用https连接,这并不是协议本身的限制,实际上是由于低版本谷歌浏览器和firefox浏览器的安全机制造成的。

Socket.io

这个库,针对客户端和服务端使用WebSocket分别进行了封装,提供了简洁方便的API。

热门标签
new year
在线咨询
咨询热线 400-0505-565
投诉与建议
{{item.description}}

—您的烦恼我们已经收到—

我们会将处理结果发送至您的手机

请耐心等待