在现代 Web 开发中,HTTP 是最常用的协议。然而,随着实时性需求的增加,WebSocket 协议逐渐被更多的开发者所关注和使用。这篇文章将从 HTTP 的局限性、WebSocket 的特性,以及两者的适用场景出发,深入剖析为什么有 HTTP 却还需要 WebSocket。


一、HTTP 的基本特点与局限性 1.1 HTTP 的基本工作原理HTTP(Hypertext Transfer Protocol)是一种请求-响应模型的协议。典型的通信流程如下:

  1. 客户端发起请求(Request)。
  2. 服务器接收请求并返回响应(Response)。
  3. 通信结束,连接关闭(HTTP 1.x 默认)。

image.png

这种模式非常适合传统 Web 应用,例如加载静态页面、提交表单数据等。


1.2 HTTP 的局限性

随着 Web 应用的复杂性增加,尤其是在实时交互领域,HTTP 的设计逐渐暴露了一些问题:

通信是单向的:服务器无法主动向客户端推送数据。请求头开销较大:每次请求都会附带大量冗余信息,例如 Cookie、Headers。实时性差:即使使用轮询(Polling)或长轮询(Long Polling),也无法完全满足高频实时通信的需求,同时增加了服务器负担。

例如,在构建一个股票行情实时更新的应用时,HTTP 需要频繁轮询才能获取最新数据,这种方式不仅效率低,还浪费了大量带宽资源。

image.png

二、WebSocket:实时通信的利器

2.1 什么是 WebSocket? WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。与 HTTP 不同,WebSocket 在初次握手后,通信通道将保持打开状态,直到显式关闭。

WebSocket 的握手过程:

  1. 客户端通过 HTTP 请求发起 WebSocket 连接。
  2. 服务器响应并完成协议升级。
  3. 双方建立全双工通信通道。

image.png