什么是 WebSocket?

18 Mar 2025 | 8 分钟阅读

WebSocket 是客户端和服务器之间持续的双向通信通道。客户端可以是任何网络浏览器,服务器可以是任何后端系统。WebSocket 使用 HTTP 请求/响应连接,可以传输任意数量的协议,并且无需轮询即可提供服务器到客户端的信息。它允许双向数据传输,我们可以同时将数据从客户端传输到服务器,反之亦然。

这项先进技术开启了客户端和服务器之间交互式的双向通信。通过使用 WebSocket API,我们可以将信息发送到服务器,并在运行时接收响应,而无需轮询服务器以获取响应。

WebSocket 使用基于 TCP 的网络协议来指定网络之间的数据传输。它是一种广泛使用的网络协议,几乎所有客户端都支持,因为它可靠且高效。TCP 协议在两个端点之间建立通信。通常它被称为套接字。

WebSocket API 等双向连接技术允许数据同时双向流动,从而提供了一种快速传输数据的方式。因此,WebSocket 允许 Web 应用程序与 WebSocket 服务器通信,而无需中断以提供实时数据。

下图解释了 WebSocket 如何传输数据

What is WebSocket

它是如何工作的?

要了解 WebSocket 的工作原理,首先我们需要了解网站如何通过 HTTP 协议工作以及网站如何在不使用 WebSocket 的情况下访问数据。通常,网页通过创建 HTTP 连接来通过 HTTP 协议提供服务。在这里,数据根据客户端的请求由 HTTP 协议提供服务。

每次客户端请求服务器时,每个操作都有一个指定的响应,服务器会相应地发送响应。

简而言之,HTTP 协议遵循请求和响应架构,这会导致响应延迟。

What is WebSocket

WebSocket 协议与 HTTP 协议的工作方式不同。它可以通过动态调用方法实时传输数据。我们所需要做的就是使用 WebSocket 协议建立从客户端到服务器的连接。WebSocket 协议将握手传输到客户端。它包含识别所需数据传输信息的所有必要信息。

一旦连接建立,通道就会打开,并且在握手后保持打开状态,以允许持续通信。因此,服务器可以向客户端发送数据,而无需请求。因此,每当服务器收到新数据时,它都会通过相同的通道将其传输到客户端,而无需进一步请求。

要使用 Socket 启动通信,客户端像 HTTP 一样提交请求,并打开通信通道。之后,维护 TCP 连接以传输数据。

What is WebSocket

Web 应用程序中遵循套接字方法来发送推送通知。

何时需要使用 WebSockets?

如果任何 Web 应用程序的速度至关重要,WebSocket 将非常有用。需要运行时数据更新并需要高速连接但具有低延迟连接的网站应使用 WebSocket。

以下是一些 WebSocket 必须与应用程序集成的示例。

需要实时数据更新的 Web 应用程序

某些 Web 应用程序需要实时数据更新;此类应用程序应具有 Web 套接字连接。这些 Web 应用程序使用 WebSocket 向客户端显示数据,而无需刷新页面。在此类应用程序中,后端服务器通过连接的通道连续发送数据。后端使用已打开的相同连接来传输更新的数据。因此,它执行快速数据传输并提高应用程序性能。

这些网站的示例包括交易网站和实时体育比分网站。交易网站将持续显示价格和其他数据的波动和变化,而无需刷新网页。服务器通过连接的通道持续将这些数据推送给客户端。

实时体育比分数据应用程序也遵循类似的方法。当比分更新时,它会通过连接的套接字通道从后端推送。

游戏应用程序

WebSocket 协议是游戏应用程序中必须使用的协议。您在玩游戏时一定注意到很多事情,例如 UI 在不刷新页面的情况下更新,以及分数和目录在游戏运行时更新。在多人游戏中,您还可以与同伴玩家聊天。所有这些都得益于 WebSocket 的实现。因此,它在游戏应用程序中非常有用,可以为用户提供无缝的用户界面。

聊天应用程序

如今,聊天应用程序非常流行,可以在运行时共享媒体和内容,甚至无需刷新页面。此外,它们还提供跟踪共享消息和媒体的功能,无论是已送达、已读还是下一个用户已采取行动。想象一下,所有这些都可以通过实现 WebSocket 来实现。

在聊天应用程序中,WebSocket 在打开时建立连接。之后,它不断地在用户之间交换、发布和广播消息和媒体。为了端到端数据传输,它使用相同的 Web 套接字来传输数据。它通过客户端 ID 识别用户。

除了上面讨论的用例,它还有以下用途

  • 它对于 Web 应用程序中的实时聊天支持功能非常有用。
  • 它还用于在新闻共享应用程序中显示新闻滚动条。
  • 它还用于显示带有牲畜数据的股票滚动条。
  • 它用于消息传递应用程序。
  • 它用于大多数实时游戏应用程序。
  • 具有实时互动和用户之间即时聊天的社交网站

何时应避免使用 WebSocket?

WebSocket 应用于需要从网络处理实时数据更新或连续数据流的场景。如上所述,我们已经讨论了 WebSocket 的大多数常见用例。因此,如果我们不需要实时处理任何数据,就没有必要使用 WebSocket。

例如,如果我们需要获取旧数据,或者当应用程序提供给客户端时获取一次数据,我们就不需要使用 WebSocket。在这种情况下,我们应该使用 HTTP 协议来满足用户请求。在这种情况下,我们可以使用 REST API 来满足用户请求。如果服务器上的数据不是实时更新的,REST API 足以满足用户请求。

让我们了解 WebSocket 和 HTTP 连接之间的区别。

WebSocket 和 HTTP 连接之间的区别

在处理网络请求时,最明显的问题是应该选择 http 还是 WebSocket?

超文本传输协议 (HTTP) 是一种客户端-服务器通信协议,它支持请求-响应模型,其中服务器根据用户的请求进行响应。在 HTTP 中,客户端可以是向服务器发送请求的 Web 浏览器。它将是第一个发起通信的人,服务器将响应相应的请求。一旦请求得到服务,连接将被关闭。

在这里,我们讨论了两种协议之间的一些主要区别,这将清楚地说明在哪些条件下我们应该使用 WebSocket 和 HTTP 连接。

WebSocketHTTP
它是一种用于双向通信的双向协议。HTTP 是一种单向协议。它以一个方向流动数据。
它提供持久连接,这意味着一旦客户端和服务器之间建立连接,两者就可以实时相互传输数据。相比之下,HTTP 连接不是持久的。每次传输数据都需要新的请求。
它旨在处理实时通信和数据传输。它以请求-响应模型的方式设计,以满足用户的需求。
它比 HTTP 的开销更低,因为它需要更少的头信息和更少的数据传输,从而导致更低的延迟和更高的性能。与套接字相比,它的开销更高。
WebSocket 还可以通过在网络请求上应用 SSL/TLS 来加密,增加一层安全性。但这仅应用于初始握手。在 HTTP 中,加密应用于每个请求。
套接字连接通过初始握手过程启动。它通过从客户端发送请求来启动。
它可以在任何端口上运行。通常,它在未加密连接的端口 80 和加密连接的端口 443 上运行。
它支持全双工通信,意味着客户端和服务器可以同时向对方发送数据。HTTP 支持半双工通信,意味着客户端或服务器只能一次向对方发送数据。
它适用于需要实时通信的应用程序,例如聊天应用程序、实时数据分析、游戏等。它适用于需要一次性请求的应用程序,例如网页服务或文档检索。
使用 Socket,我们可以在不从客户端请求数据的情况下将数据推送到客户端。它只响应客户端的请求。

HTTP 的用例

以下是一些 HTTP 协议的常见用例

  • HTTP 协议最常见的用途是在静态网站中,我们需要根据用户的请求显示一些数据或信息。
  • 在不需要频繁更新数据的应用程序中,
  • HTTP 请求在处理可缓存资源时表现良好,我们需要存储用户操作以供将来响应。

Web Sockets 的用例

以下是一些 Web Sockets 协议的常见用例

建议在需要实时数据或信息流(例如实时体育赛事或聊天应用程序)的应用程序中使用 WebSockets。

它适用于在数据库更新上进行一些动态数据传输并期望持续频繁更新的应用程序。

社交媒体应用程序必须与多个用户建立连接。在此类应用程序中,Socket 将帮助客户端持续跟踪更新。

总结

WebSocket 是一种先进的技术,它开启了客户端和服务器之间交互式的双向通信。通过使用 WebSocket API,我们可以将信息发送到服务器,并在运行时接收响应,而无需轮询服务器以获取响应。它允许双向数据传输,我们可以同时将数据从客户端传输到服务器,反之亦然。

超文本传输协议 (HTTP) 是一种客户端-服务器通信协议,它支持请求-响应模型,其中服务器根据用户的请求进行响应。在 HTTP 中,客户端可以是向服务器发送请求的 Web 浏览器。它将是第一个发起通信的人,服务器将响应相应的请求。一旦请求得到服务,连接将被关闭。

在这里,我们讨论了什么是 WebSocket 及其用例。此外,我们讨论了它与 HTTP 协议的区别及其用例。