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. 0 1

何时使用WebSocket

**1、实时Web应用:**实时Web应用程序使用Web套接字在客户端显示数据,这些数据由后端服务器不断发送。在WebSocket中,数据被不断地推送/传输到已经打开的同一连接中,这就是为什么WebSocket更快并提高了应用程序性能。例如,在交易网站或比特币交易中,为了显示价格波动和移动数据,后端服务器使用WebSocket通道不断向客户端推送。

**2、游戏应用程序:**在游戏应用程序中,可能会关注这一点,服务器不断接收数据,在不刷新UI的情况下,它将在屏幕上生效,UI甚至在不建立新连接的情况下自动刷新,因此它在游戏应用程序中非常有用。

**3、聊天应用程序:**聊天应用程序使用WebSocket只建立一次连接,以便在订阅者之间交换、发布和广播消息。它重用相同的WebSocket连接,用于发送和接收消息以及进行一对一的消息传输。

PART. 0 2

何时不使用WebSocket

如果我们想要通过网络传输任何实时更新或连续的数据流,可以使用WebSocket。

如果我们只想获取一次数据来用应用程序处理它,我们应该使用HTTP协议,只获取一次的数据可以通过简单的HTTP请求查询,所以在这种情况下,最好不要使用WebSocket。

推荐阅读

推荐视频

相关推荐
IP老炮不瞎唠10 分钟前
批量任务vs持续监控:不同市场调研场景下的配置策略
大数据·网络·网络协议
TheSumSt15 分钟前
日常教程丨远程串流打游戏方法介绍(Parsec/Tailscale+Headscale+DERP+Sunshine&Moonlight)
linux·网络·经验分享·nginx·开源·玩游戏
ICT系统集成阿祥17 分钟前
防火墙威胁告警溯源源 IP 完整方法(华为 USG / 华三 SecPath 通用)
网络·tcp/ip·华为
KaMeidebaby22 分钟前
卡梅德生物技术快报|组蛋白乙酰化修饰调控动脉粥样硬化的分子机制及中药表观干预研究
网络·人工智能·网络协议·tcp/ip·算法
念恒1230625 分钟前
进程间通信
linux·服务器·网络
24zhgjx-fuhao32 分钟前
IS-IS认证
网络
计算机安禾1 小时前
【算法分析与设计】第38篇:最近点对与分治在几何中的应用
java·服务器·网络·数据库·算法
老高学长1 小时前
电脑监控软件有哪些实用功能?信企卫电脑监控软件五大功能详解,保存不亏
网络·电脑
rcms152702692181 小时前
BOBST 0701249701 723-LW 11246054 光电检测模块
网络
夜月yeyue1 小时前
TCP/IP 协议解析
linux·服务器·c语言·网络·网络协议·tcp/ip