龙空技术网

WebSocket是什么原理?为什么能实现持久化连接?

蔚可云 219

前言:

此时朋友们对“ajax几秒”都比较关心,小伙伴们都想要了解一些“ajax几秒”的相关资讯。那么小编也在网摘上收集了一些关于“ajax几秒””的相关资讯,希望我们能喜欢,看官们快快来了解一下吧!

为了更好的理解WebSocket,我们需要从HTTP开始说起。因为很多时候,大家都喜欢拿WebSocket和HTTP做比较。

HTTP的生命周期,通过Request来界定,一个Request和一个Response,这次HTTP请求也就结束了。

在HTTP1.1中,允许发送多个Request和接收多个Response,但无论如何,Request永远等于Response。

很多网站为了实现实时的信息传递,都会使用轮询技术,轮询有两种,一种是ajax轮询,一种是长轮询(long poll)。

ajax轮询的原理很简单,让浏览器每隔几秒向服务器发送一次请求,询问服务器是否有新的信息。

客户端:有没有新信息,没有我等会再问(Request)

服务器:没有(Response)

客户端:有没有,没有我等会再问(Request)

服务器:没有(Response)

客户端:有没有新信息,没有我等会再问(Request)

服务器:有,发给你了(Response)

长轮询与ajax轮询相似,不同的是,当客户端发起请求后,如果没有消息,就一直不返回Response,直到有新消息为止。

客户端:有没有新信息,没有不要回我(Request)

……

服务器:现在有了,给你(Response)

以上两种方式,都在不断地建立HTTP连接,只有客户端发起请求时,服务端才能回应,服务端是不能主动发起的。

而且HTTP还是一个无状态协议,服务器不会保留与客户交易时的任何状态,这样做的好处是大大减轻了服务器的记忆负担,保持较快的响应速度。

不过因此也产生了一些问题。客户端要不断地发送HTTP请求,每次都要带上较长的头部,真正有效的数据可能很少,浪费很多带宽资源,也给服务器增加了压力。

好了,我们的主角WebSocket终于可以登场了。

相对HTTP来说,WebSocket是一种持久化的协议。它会基于HTTP协议,来完成一部分握手,之后就脱离HTTP,完全采用WebSocket了。

建立WebSocket连接的过程为:

1.客户端发起HTTP请求,经过3次握手建立TCP连接,HTTP请求里存放WebSocket支持的版本号等信息。2.服务器收到客户端握手请求后,回馈数据。

以上两个步骤完成后,HTTP握手部分完成,协议升级为WebSocket,此时服务器就不再需要客户端发起请求,再响应请求了,可以主动推送信息给客户端了。

客户端:我要建立WebSocket协议。

服务器:好的,已经升级为WebSocket协议了。

客户端:有信息的时候,推送给我。

服务器:好的,有信息会推给你。

服务器:有信息了,给你。

服务器:又有信息了,给你。

……

只需经过一次HTTP请求,服务器就能源源不断地向客户端推送信息了!

从客户端主动询问,变成服务器主动推送,解决了服务器上资源消耗较多的问题。

以上便是WebSocket原理以及实现持久化连接的过程。

标签: #ajax几秒