本页内容

Qt WebSockets 概述

Qt WebSockets 可帮助您构建支持 WebSocket 的应用程序。它实现了 WebSocket 协议——该协议由 IETF(互联网工程任务组)提出,旨在利用现有 Web 基础设施实现更优的双向通信方案。

过去,需要双向通信或推送通知的 Web 应用程序必须使用现有的基于 HTTP 的解决方案之一。这些解决方案采用了轮询、长轮询和流式传输等不同技术,以克服 HTTP 协议的局限性——该协议原本并非为这类用例而设计。 这导致了较高的网络延迟、不必要的数据交换,以及数据过时的问题。IETF 提供的 WebSocket 在很大程度上帮助解决了这些问题。

它是如何工作的?

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 模块提供了用于开发基于WebSocket的服务器和客户端应用程序的API。这些API的一个应用示例是:服务器应用程序提供股票数据,而客户端应用程序在某些股票价格发生变化时注册推送通知。

该模块同时提供了 C++ 和 QML 版本的 API,因此您可以根据需要选择合适的实现方式。

Qt WebSockets 与云服务结合

客户端应用程序通常依赖外部服务获取数据。由于大多数服务提供商目前尚不支持 WebSocket,因此您最终需要开发一个支持 WebSocket 的服务器应用程序来弥合这一差距。 您可以将服务器部署在企业级 WebSocket 网关服务(例如云服务)上,从而避免维护托管此类服务所需的基础设施带来的麻烦。

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

© 2026 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.