Qt WebSockets 概述
Qt WebSockets 通过 WebSocket,您可以构建支持 WebSocket 的应用程序。该协议由 IETF(互联网工程任务组)提供,是使用现有网络基础设施进行双向通信的更好替代方案。
一直以来,需要双向通信或推送通知的网络应用程序必须使用其中一种基于 HTTP 的解决方案。这些解决方案采用了轮询、长轮询和流式传输等不同技术,以克服 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 版本的应用程序接口,因此您可以根据自己的需要进行选择。
Qt WebSockets 使用云服务
客户端应用程序通常依赖外部服务获取数据。这些服务提供商大多还不支持 WebSocket,因此您最终需要开发一个支持 WebSocket 的服务器应用程序来弥补这一差距。您可以在企业 WebSocket 网关服务(如云服务)上运行服务器,从而避免维护托管此类服务所需的必要基础设施的麻烦。
大多数云服务都提供平台即服务(PaaS)后台,可以在云上部署和运行服务器应用程序实例。客户端应用程序可以使用 WebSocket URL 连接到运行中的服务器并接收数据。
相关信息
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.