QT - WebSockets

2020-04-12  本文已影响0人  YottaYuan

QT - WebSockets

WebSocket是基于Web的协议,旨在在客户端应用程序和远程主机之间实现双向通信。如果初始握手成功,它将使两个实体来回发送数据。WebSocket是应用程序通过较少的网络延迟和最少的数据交换来获取实时数据源的解决方案。

Qt WebSockets模块提供了C ++和QML接口,这些接口使Qt应用程序充当可以处理WebSocket请求的服务器,可以充当从服务器接收的数据的客户端的客户端,或者两者都可以。

入门

要包括模块类的定义,请使用以下指令:

#include <QtWebSockets/QtWebSockets>

要将QML类型导入到您的应用程序中,请在.qml文件中使用以下import语句:

import QtWebSockets 1.14

要链接该模块,请将以下行添加到您的qmake .pro文件中:

QT += websockets

Qt WebSockets概述

Qt WebSockets使您能够构建支持WebSocket的应用程序。它提供了WebSocket协议的实现,该协议由IETF(Internet工程任务组)提供,是使用现有Web基础结构进行双向通信的更好替代方案。

从历史上看,需要双向通信或推送通知的Web应用程序必须使用可用的基于HTTP的解决方案。这些解决方案采用了诸如轮询,长轮询和流传输之类的不同技术来克服HTTP协议的局限性,这些协议并非针对此类用例而设计。这导致高网络延迟,不必要的数据交换以及陈旧或旧数据。IETF 的WebSocket产品有助于在很大程度上克服这些问题。

它是如何工作的?

image

如您在图片表示中所看到的,基于WebSocket的解决方案由客户端和服务器端组成。大多数流行的Web浏览器(例如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的示例是提供股票数据的服务器应用程序,以及当少数股票价格发生变化时注册推送通知的客户端应用程序。

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

带有云服务的Qt WebSockets

客户端应用程序通常依赖于外部服务来获取数据。这些服务提供商中的大多数还不支持WebSocket,因此最终需要开发可可感知WebSocket(WebSocket-aware)的服务器应用程序以弥合差距。您可以在企业WebSocket网关服务(例如云服务)上运行服务器,从而避免了维护承载此类服务所需的必要基础结构的麻烦。

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

相关信息

WebSocket QML Type

Properties

Signals

Methods

WebSocketServer QML Type

Properties

Signals

上一篇下一篇

猜你喜欢

热点阅读