Redian新闻
>
WebSocket是什么以及其与HTTP的区别

WebSocket是什么以及其与HTTP的区别

科技

新钛云服已累计为您分享774篇技术干货


HTTP协议

HTTP是单向的,客户端发送请求,服务器发送响应。举个例子,当用户向服务器发送请求时,该请求采用HTTP或HTTPS的形式,在接收到请求后,服务器将响应发送给客户端,每个请求都与相应的响应相关联,在发送响应后,连接关闭,每次HTTP或HTTPS请求都会建立到服务器的新连接,并且在获得响应后,连接会自行终止。

HTTP是一种在TCP之上运行的无状态协议,TCP是一种面向连接的协议,它保证使用三方握手方法传递数据包,并重新传输丢失的数据包。

HTTP可以在任何可靠的面向连接的协议(如TCP、SCTP)之上运行。当客户端向服务器发送HTTP请求时,客户端和服务器之间的TCP连接是打开的,在得到响应后,TCP连接被终止,每个HTTP请求都会打开到服务器的单独TCP连接。例如,如果客户端向服务器发送10个请求,则10个单独的TCP连接将被打开,并在获得响应/回退后关闭。

以ASCII编码的HTTP消息信息,每个HTTP请求消息包括HTTP协议版本(HTTP/1.1、HTTP/2)、HTTP方法(GET/POST等)、HTTP标头(内容类型、内容长度)、主机信息等,以及包含正在传输到服务器的实际消息的主体。HTTP标头的大小从200字节到2KB不等,HTTP标头的常见大小为700-800字节。当Web应用程序在客户端使用更多的cookie和其他工具来扩展代理的存储功能时,它会减少HTTP标头负载。

图1 HTTP连接示意图


WebSocket

WebSocket是双向的,是一种全双工协议,用于相同的客户端-服务器通信场景,与HTTP不同,它从ws://或wss://开始。它是一个有状态的协议,这意味着客户端和服务器之间的连接将保持有效,直到任何一方(客户端或服务器)终止。客户端和服务器关闭连接后,连接将从两端终止。
让我们举一个客户端-服务器通信的例子,有一个客户端,它是一个Web浏览器和一个服务器,每当我们启动客户端和服务器之间的连接时,客户端-服务器都会进行握手,并决定创建一个新的连接,这个连接将保持有效,直到它们中的任何一个终止。当连接建立并处于活动状态时,使用相同的连接信道进行通信,直到通信终止。
这就是在客户端-服务器握手之后,客户端-服务器如何决定一个新的连接以保持其活动,这个新的连接将被称为WebSocket。一旦通信链路建立和连接打开,消息交换将以双向模式进行,直到客户端-服务器之间的连接持续存在。如果他们中的任何人(客户端服务器)宕机或决定关闭连接,双方都将关闭连接。套接字的工作方式与HTTP的工作方式略有不同,状态代码101表示WebSocket中的交换协议。
2 WebSocket连接示意图


PART.01
何时使用WebSocket




1、实时Web应用:实时Web应用程序使用Web套接字在客户端显示数据,这些数据由后端服务器不断发送。在WebSocket中,数据被不断地推送/传输到已经打开的同一连接中,这就是为什么WebSocket更快并提高了应用程序性能。例如,在交易网站或比特币交易中,为了显示价格波动和移动数据,后端服务器使用WebSocket通道不断向客户端推送。
2、游戏应用程序:在游戏应用程序中,可能会关注这一点,服务器不断接收数据,在不刷新UI的情况下,它将在屏幕上生效,UI甚至在不建立新连接的情况下自动刷新,因此它在游戏应用程序中非常有用。
3、聊天应用程序:聊天应用程序使用WebSocket只建立一次连接,以便在订阅者之间交换、发布和广播消息。它重用相同的WebSocket连接,用于发送和接收消息以及进行一对一的消息传输。



PART.02
何时不使用WebSocket



如果我们想要通过网络传输任何实时更新或连续的数据流,可以使用WebSocket。
如果我们只想获取一次数据来用应用程序处理它,我们应该使用HTTP协议,只获取一次的数据可以通过简单的HTTP请求查询,所以在这种情况下,最好不要使用WebSocket。

    推荐阅读   




    推荐视频    


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
只愿君心似我心HTTPS到底是如何保障我们的安全的深入浅出 OkHttp 源码解析及应用实践6004 血壮山河之随枣会战 “和平运动 ”4美国移民,EB1、EB2、EB3、EB4、EB5到底都是什么?基于RNA测序分析中国人群MET 14号外显子跳跃突变的发生率及其与PD-L1表达相关性什么是净工资?如何计算它以及它与总工资的区别40 个定时任务,带你理解 RocketMQ 设计精髓!你我他,就是个无,纯没有。Docker的使用案例以及未来发展、Docker Hub 服务、环境安全、容器部署安全Taking Stock of Love and Losses in the ‘World’s Supermarket’为什么Blackstone叫黑石,而Blackrock叫贝莱德?精选SDE岗位 | BlackRock、Zoom、BlackBerry公司岗位发布!重温经典 | 芒格论基本的、普世的智慧,及其与投资管理和商业的关系180刀Razer DeathAdder V3 Pro Ultra-lightweight Ergonomic Wireless高并发场景下的 HttpClient 优化方案,QPS 大大提升!OceanBase数据库炸场!具备OLTP完整核心功能,实验室版本不输ClickHouse【Locker Room】Locker Room运动上新!女篮、飞盘&腰旗橄榄球,你准备好了吗?英语句子什么时候用to do something,什么时候用doing something?第五章第三节 共产国际和中国共产党纽约后花园China Celebs Caught Sending Bday Videos to Crime FamilyCompetition for Civil Service Jobs Keeps Getting Fiercer硬核观察 #1181 欧洲立法准备拦截和监视加密的 HTTPS 连接,且不允许反制为什么以色列必然而且快速消灭哈马斯?绝不仅仅是仇恨那么简单Spring Week | 顶级资管BlackRock急招本硕生,直通2025暑期实习在美国如何识别水损害(water damage)与霉菌的区别?以及下一步该怎么做?China’s Rural Children Close Height, Weight Gap, but Obesity Loo精选DS岗位 | Amazon、Microsoft、BlackRock公司岗位发布!Python + Docker 还是 Rust + WebAssembly?这并不难选The lessons from Microsoft’s startling comeback | 商论双语SpringCloud 远程调用为啥要采用HTTP,而不是RPC?深度好文|为什么Blackstone叫黑石,而Blackrock叫贝莱德?Old Markets, New Appeal: Young Chinese Rediscover Wet Markets你猜,为什么Google和Facebook不用Docker?
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。