Qt WebSockets 概述

Qt WebSockets 使您能夠構建 WebSocket 感知應用程序。它提供 WebSocket 協議的實現,該協議作為使用現有 Web 基礎設施雙嚮通信的更優替代,由 IETF (Internet 工程任務組) 提供。

過去,需要雙嚮通信 (或推送通知) 的 Web 應用程序必須使用基於 HTTP 的某個可用解決方案。這些解決方案雇用不同技術 (譬如:輪詢、長輪詢、及流),以剋服 HTTP 協議的局限性 (HTTP 協議並不是為這種用例設計的)。這會導緻高網絡延遲、不必要的數據交換、及陳舊 (或舊) 的數據。由 IETF 提供的 WebSocket,在很大程度上有助於剋服這些問題。

它如何工作?

WebSocket protocal flow diagram

如圖所示,基於 WebSocket 的解決方案由客戶端側和服務器側組成。WebSocket 支持的本機客戶端側可用於大多數流行 Web 瀏覽器 (如 Google Chrome、Internet Explorer、Safari 等)。WebSocket 支持的服務器側使之成為完整解決方案,啓用雙嚮通信。任何帶有本機 WebSocket 支持的瀏覽器都應該允許您使用 HTML5 WebSocket API 運行基於 HTML 和 JavaScript 的簡單客戶端應用程序。

WebSocket 連接從初始 HTTP 兼容握手開始,確保嚮後兼容以便 WebSocket 連接可以共享默認 HTTP (80) 和 HTTPS (443) 端口。握手成功後,連接打開以進行數據交換,直到 2 實體之一結束連接。

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 並接收數據。