Qt WebSockets 概述

Qt WebSockets 使您能够构建支持 WebSocket 的应用程序。它提供了一种 WebSocket 协议的实现,该协议由 IETF(互联网工程任务组)提供,作为使用现有 web 基础设施进行双向通信的更好选择。

历史上,需要进行双向通信或推送通知的 web 应用程序,必须使用可用的基于 HTTP 的解决方案之一。这些解决方案采用了不同的技术,如轮询、长轮询和流式传输,以克服 HTTP 协议的限制,该协议不是为这些用例而设计的。这导致了高网络延迟、不必要的数据交换和过时的数据。IETF 提供的 WebSocket 有助于在很大程度上克服这些问题。

它是如何工作的?

如您在图示表示中看到的,基于 WebSocket 的解决方案由客户端和服务器端组成。大多数流行的网页浏览器(如 Google Chrome、Internet Explorer、Safari 等)都提供了对 WebSocket 的原生客户端支持。WebSocket 的服务器端支持使其成为完整的解决方案,能够实现双向通信。任何原生 WebSocket 支持的浏览器都应该允许您使用 HTML5 WebSocket API 运行一个简单的基于 HTML 和 JavaScript 的客户端应用程序。

WebSocket 连接以一个与 HTTP 兼容的手动协议开始,这保证了向后兼容性,以便 WebSocket 连接可以使用默认的 HTTP(80)和 HTTPS(443)端口。成功手动协议后,连接对于数据交换是开放的,直到两个实体中的任何一个结束连接。

WebSocket 协议使用 ws: 和 wss: URL 方案来分别表示不安全和安全 WebSocket 请求。在初始手动协议期间,如果检测到代理服务器,协议会通过向代理发送 HTTP CONNECT 语句来尝试设置隧道。无论请求类型如何,都使用处理代理的隧道方法,尽管已经证明它在安全连接中与 TLS(传输层安全性)一起工作得更好。

典型用例

WebSocket 适合于以下场景:

  • 必须展示最准确的数据,
  • 低网络延迟和最小数据交换至关重要。

一些使用传统方法难以实现的例子应用程序包括即时通讯、在线游戏、在线股票交易等。

Qt WebSockets 的作用

Qt WebSockets 模块提供 API 来开发基于 WebSocket 的服务器和客户端应用程序。这些 API 可用的示例是一个提供股票数据的服务器应用程序和一个当某几种股票价格发生变动时,客户端应用程序会注册接收推送通知的程序。

该模块提供 C++ 和 QML 版本的 API,因此您可以选择适合您需求的替代方案。

Qt WebSockets 与云服务

客户端应用程序通常依赖于外部服务来获取数据。大多数服务提供商目前还不支持WebSocket,因此您最终需要开发一个知晓WebSocket的服务器应用程序以填补这一差距。您可以在企业级WebSocket网关服务上运行服务器,例如在云服务上,以避免维护必要基础设施的麻烦。

大多数云服务提供商提供平台即服务(PaaS)的后端,这使您能够在云上部署和运行服务器应用程序的一个实例。客户端应用程序可以使用WebSocket URL连接到运行中的服务器并接收数据。

© 2024 Qt公司有限公司。本文件中包含的文档贡献为其各自所有者的版权。本文件提供的文档是根据Free Software Foundation发布的GNU自由文档许可版本1.3的条款许可的。Qt及其相关商标是芬兰Qt公司及其在全球范围内的商标。所有其他商标均为各自所有者的财产。