文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-12-03 05:51

关注

为了更好的理解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连接的过程为:

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

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

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

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

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

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

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

……

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

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

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

 

 

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯