打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
WebSocket是什么原理?为什么可以实现持久连接?

解释WebSocket为什么可以实现持久连接,还是先介绍一些什么是WebSocket,以及它产生的原因是什么。

是什么WebSocket?

WebSocket是一个协议。

协议就是王八的屁股——规定,你可以不遵守,但是别人都遵守你不遵守,你就跟别人玩不到一块去。

WebSocket协议在2008年诞生,2011年成为了国际标准,现在绝大部分浏览器都已经支持了。

产生的原因

其实原因是为了弥补HTTP协议的不足,因为HTTP协议只能由客户端发起请求,并且一个Request要对应一个Response(长链接也是如此)。

举个例子:

  • 我之前做过一个小项目,只有一个页面,展示的是各个分公司当天的业绩,就是挣了多少钱。后台服务是Java,数据库是Mysql,有一张汇总表,内容大概是北京-100万,上海-80万这样的。

  • 流程很简单,HTML页面发起请求到Java,Java访问数据库查询数据,再返回给HTML展示。但是Mysql中的汇总表的数据,是不定期更新的,可能10分钟,可能20分钟。

  • 最简单的做法:HTML中用JS设置一个定时轮询(Polling),每隔几秒去发起一次请求,获取最新的数据,如果数据没有变化,页面也保持变化;缺点很明显,前端发起的很多请求都是无效的(因为数据没有变化)。

WebSocket的通信原理

而WebSocket,是要在客户端和服务器之间,建立一个通道,建立一个【真的长链接】。

WebSocket是要借助于HTTP,完成一部分工作。我在找到一个WebSocket在线测试的网站,打开之后查看请求和响应(具体网站连接也看下面图片中的信息)。

可以看出来协议里面多了两行:

Upgrade: websocket

Connection: Upgrade

这个就是关键内容了,通过请求告诉服务器:看清楚咯,请求要用WebSocket协议。

服务器会回答:好的,那我就切换到WebSocket协议啦。

到了这时候,HTTP完成它所有工作,客户端和服务器已经建立好了一个通道,下面就按照WebSocket协议进行了,服务端也就可以主动推送信息给客户端(双向),并且这个连接会持续存在直到客户端或者服务器端的某一方主动的关闭连接,故此WebSocket也就实现了持久连接。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
WebSocked、SSE、http1.0、http1.1和http2.0之间的关系
WebSocket:实时通信的利器驱动现代应用
哇靠,这些数据疯狂变化,该怎么爬取?
基于HTML5的网络直播方案及相关技术介绍
Web 实时推送技术如何弥补 HTTP 协议的缺陷? | 技术头条
B/S工作原理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服