Qt WebSockets 模塊提供了C ++和QML接口,這些接口使Qt應用程序充當可以處理 WebSocket 請求的服務器,可以充當從服務器接收的數據的客戶端的客戶端,或者兩者都可以。
要包括模塊類的定義,請使用以下指令:
要將QML類型導入到您的應用程序中,請在.qml文件中使用以下import語句:
要鏈接該模塊,請將以下行添加到您的qmake .pro文件中:
Qt WebSockets 使您能夠構建支持 WebSocket 的應用程序。它提供了 WebSocket 協議的實現,該協議由IETF(Internet工程任務組)提供,是使用現有Web基礎結構進行雙向通信的更好替代方案。
從歷史上看,需要雙向通信或推送通知的Web應用程序必須使用可用的基於HTTP的解決方案。這些解決方案采用了諸如輪詢,長輪詢和流傳輸之類的不同技術來克服HTTP協議的局限性,這些協議並非針對此類用例而設計。這導致高網絡延遲,不必要的數據交換以及陳舊或舊數據。IETF 的 WebSocket 產品有助於在很大程度上克服這些問題。
如您在圖片表示中所看到的,基於 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 模塊提供API,以開發基於 WebSocket 的服務器和客戶端應用程序。可以使用這些API的示例是提供股票數據的服務器應用程序,以及當少數股票價格發生變化時註冊推送通知的客戶端應用程序。
該模塊提供API的C ++和QML版本,因此您可以選擇適合您需要的替代方法。
客戶端應用程序通常依賴於外部服務來獲取數據。這些服務提供商中的大多數還不支持 WebSocket ,因此最終需要開發可 可感知WebSocket(WebSocket-aware) 的服務器應用程序以彌合差距。您可以在企業 WebSocket 網關服務(例如雲服務)上運行服務器,從而避免了維護承載此類服務所需的必要基礎結構的麻煩。
大多數雲服務都提供平臺即服務(PaaS)後端,該後端可在雲上部署和運行服務器應用程序的實例。客戶端應用程序可以使用 WebSocket URL 連接到正在運行的服務器並接收數據。