Qt WebSockets 使您能夠構建 WebSocket 感知應用程序。它提供 WebSocket 協議的實現,該協議作為使用現有 Web 基礎設施雙嚮通信的更優替代,由 IETF (Internet 工程任務組) 提供。
過去,需要雙嚮通信 (或推送通知) 的 Web 應用程序必須使用基於 HTTP 的某個可用解決方案。這些解決方案雇用不同技術 (譬如:輪詢、長輪詢、及流),以剋服 HTTP 協議的局限性 (HTTP 協議並不是為這種用例設計的)。這會導緻高網絡延遲、不必要的數據交換、及陳舊 (或舊) 的數據。由 IETF 提供的 WebSocket,在很大程度上有助於剋服這些問題。
如圖所示,基於 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 模塊提供開發基於 WebSocket 的服務器和客戶端的應用程序 API。可以使用這些 API 的範例是提供股票數據的服務器應用程序,及當少數股票價格改變時注冊用於推送通知的客戶端應用程序。
模塊同時提供 C++ 和 QML 版本的 API,因此可以選取適閤需要的替代。
客戶端應用程序通常依賴外部數據服務。這些服務提供商大多還不支持 WebSocket,因此最終需要開發 WebSocket 感知服務器應用程序以彌閤差距。可以運行服務器在企業 WebSocket 網關服務 (如:雲服務),以避免維護托管這種服務要求的必要基礎設施的麻煩。
大多數雲服務都提供 PaaS (平颱即服務) 後端,使在雲上能夠部署和運行服務器應用程序實例。客戶端應用程序可以連接到正在運行的服務器使用 WebSocket URL 並接收數據。