[译]2024年最好的WebSocket替代品

原文链接:https://ably.com/topic/websocket-alternatives

什么是 WebSocket?

简而言之,WebSocket 是一种实时 Web 技术,可通过持久连接在客户端和服务器之间实现双向、全双工通信。 WebSocket 连接会根据需要保持活动状态(理论上,它可以永远持续),从而允许服务器和客户端以最小的开销随意发送数据。

img

了解更多:

什么时候应该考虑使用 WebSocket 替代方案?

对于实时或近实时发送和使用数据至关重要(或至少是理想的)的用例,WebSocket 是一个绝佳的选择。示例包括聊天应用程序多人协作体验以及广播实时路况更新

了解有关 WebSocket 用例的更多信息

然而,很少有一种放之四海而皆准的协议:不同的协议比其他协议更好地服务于不同的目的。例如,如果您的应用程序严重依赖 CRUD 操作,并且用户不需要快速对更改做出反应,那么 HTTP 是比 WebSockets 更好的选择。另一个例子 - 如果您想传输音频和视频数据,WebRTC 是比 WebSockets 更好的选择。

我们要提到的最后一个例子:如果您只需要将文本(字符串)数据推送到浏览器客户端,并且您从不期望需要双向通信,那么您可以使用服务器发送事件(SSE)之类的东西。与 WebSocket 相比,SSE 的复杂性和要求较低,并且更易于扩展。

了解 WebSocket 的优点和缺点

WebSocket 协议的五种替代方案

现在,我们将研究 WebSocket 协议的五种替代方案 - 您可以使用这些技术来构建实时应用程序,这些技术有些类似。

服务器发送的事件

服务器发送事件 (SSE)是一种 HTTP 服务器推送技术。这个想法很简单:浏览器客户端可以订阅服务器生成的事件流,并在新事件发生时接收更新。

img

服务器发送事件的优点

服务器发送事件的缺点

对于不需要双向消息传递的场景(例如实时比分更新),SSE 是一个不错的选择。对于需要双向通信的用例,WebSocket 是更好的选择。

查看 SSE 与 WebSocket 的比较

长轮询

长轮询是一种客户端拉取技术,它采用 HTTP 请求/响应轮询并使其更加高效。在长轮询中,服务器选择尽可能长时间地保持客户端连接打开,并在新数据可用或达到超时阈值时发送响应。

img

长轮询的优点

长轮询的缺点

长轮询是 WebSocket 的早期先驱。当谈到构建高性能、低延迟的实时应用程序时,WebSocket 几乎在各个方面都是一个优越的选择。这并不是说长轮询已经过时;而是说长轮询已经过时。在某些环境中,例如带有代理服务器的公司网络会阻止 WebSocket 连接。在这种情况下,长轮询作为 WebSocket 的后备机制非常有用。

查看轮询与 WebSocket 相比需要多长时间

MQTT

MQTT(消息队列遥测传输)是一种发布-订阅消息传递协议,其历史可以追溯到 1999 年,当时 IBM 的 Andy Stanley-Clark 和 Cirrus Link 的 Arlen Nipper发布了第一个迭代

在 MQTT 架构中,我们有:

img

MQTT 优势

MQTT 缺点

由于设计轻量,对于许多物联网用例(例如从温度或压力传感器实时收集数据)来说,MQTT 是比 WebSocket 更好的选择。但是,如前所述,MQTT 无法直接向浏览器发送消息。这就是为什么 WebSocket 通常被用作将 MQTT 数据流式传输到浏览器客户端的传输方式(基于 WebSocket 的 MQTT)。

img

查看 MQTT 与 WebSocket 的比较

网络RTC

Web 实时通信 (WebRTC)是一个框架,可让您向 Web 和移动应用程序添加实时通信 (RTC) 功能。 WebRTC 允许以点对点方式传输任意数据(视频、语音和通用数据)。

img

WebRTC优势

WebRTC 的缺点

WebRTC 主要设计用于流式传输音频和视频内容(通过 UDP),在这种情况下通常是比 WebSocket 更好的选择。另一方面,当数据完整性(保证排序和交付)至关重要时,WebSocket 是更好的选择,因为您可以从 TCP 的底层可靠性中受益。

通常,WebRTC 和 WebSocket 是互补技术。 WebRTC 对等点通过称为信令的过程来协调通信。需要注意的是,WebRTC 不提供标准的信令实现,允许开发人员为此目的使用不同的协议。WebSocket 协议通常用作 WebRTC 应用程序的信令机制

img

了解 WebRTC 与 WebSocket 的比较

网络传输

WebTransport是一项新兴的实时技术,通过HTTP/3提供客户端-服务器消息传递。 WebTransport 有两个关键概念:

网络传输优势

Web传输的缺点

与我们在本文中介绍的其他 WebSocket 替代方案(这些都是已经存在一段时间的成熟技术)不同,WebTransport 更像是 WebSocket 的未来潜在替代方案。我们不知道它在未来几年将如何发展,开发人员采用它的可能性有多大,或者它在生产就绪系统中使用时可能存在哪些陷阱。相比之下,WebSocket 已经存在十多年了;它是一种强大、稳定的技术,拥有庞大而活跃的社区,目前使其成为 WebTransport 的卓越替代品。

了解有关 WebTransport 的更多信息

WebSocket 及其替代方案:头对头比较

下表显示了 WebSocket 与我们在本文中介绍的替代实时技术之间的主要区别和相似之处。

标准WebSockets长轮询上证所MQTT网络RTC网络传输
底层协议传输控制协议传输控制协议传输控制协议传输控制协议UDP、TCPWHO
双向?是的是的是的是的
潜伏低的高的低的低的低的低的
带宽低的高的低的低的高的高的
浏览器支持广泛支持广泛支持广泛支持浏览器没有内置的 MQTT 支持Internet Explorer 和 Opera Mini 不支持支持有限
使用方便缓和简单的简单的缓和难的简单的
到期技术成熟技术成熟技术成熟技术成熟技术成熟新兴科技
数据的完整性高的缓和高的高的高的高的
可扩展性高的缓和高的高的低的高的
它是干什么用的?服务器和客户端之间的实时通信。客户端发起的实时更新通信。单向数据流(服务器推送)。用于 IoT 和 M2M 通信的轻量级消息传递协议。用于实时音频和视频流的点对点通信。用于低延迟 Web 通信的多路复用传输协议。

使用多种协议提供实时体验

我们希望您发现本文对您发现 WebSocket 的潜在替代方案有所帮助。然而,现实情况是,许多生产就绪的实时系统不仅仅使用一种协议,而是多种协议的混合。

例如,如果您正在开发视频会议解决方案,WebRTC 是在对等点之间发送音频和视频数据的绝佳选择。在这种情况下,WebSocket 补充了 WebRTC,并经常用作WebRTC 对等方的信令机制

另一个例子:由于其轻量级设计,MQTT 是从物联网传感器收集遥测数据的绝佳选择。但是,如果您想使用这些数据来支持可以在浏览器中监控的实时仪表板,则 MQTT 不适合,因为浏览器不支持它。您可以做的就是通过 WebSocket 将数据发送到浏览器。这就是为什么现在许多 MQTT 代理也支持 WebSocket(或基于 WebSocket 的 MQTT)。

如果您确实决定使用 WebSocket 作为您的用例的主要传输协议,您仍然需要考虑支持后备传输,因为某些环境会阻止 WebSocket 连接(例如,限制性的公司网络)。 SSE 和长轮询通常用作 WebSocket 的后备方案。

Ably,在任何规模下都能可靠运行的多协议实时平台

Ably 是一家实时体验基础设施提供商。我们的 API 和 SDK 可帮助开发人员构建和提供实时体验,而无需担心维护和扩展混乱的实时基础设施。

Ably 的主要特性和功能:

订阅文章

订阅更新,不错过后续文章

直接通过 RSS 和 Telegram 订阅本站更新。

订阅 RSS关注 Telegram

分享文章

如果这篇有帮助,可以顺手转发

直接分享给同事、朋友,或者发到你的社交平台。

分享到 X 分享到 Telegram 邮件分享
ThingsBoard 领域模型解析
[译]WebSocket与REST