Qt WebSockets の概要

Qt WebSockets を使用すると、WebSocket 対応アプリケーションを構築できます。Qt WebSocket は IETF (Internet Engineering Task Force) が提供する WebSocket プロトコルの実装を提供します。

歴史的に、双方向通信やプッシュ通知を必要とするウェブ・アプリケーションは、利用可能なHTTPベースのソリューションのいずれかを使用する必要がありました。これらのソリューションは、ポーリング、ロング・ポーリング、ストリーミングなどの異なるテクニックを採用し、このようなユースケース向けに設計されていないHTTPプロトコルの制限を克服していました。その結果、ネットワークの待ち時間が長くなり、不必要なデータ交換が行われ、データが古くなったり陳腐化したりする。IETFが提供するWebSocketは、これらの問題を大幅に克服するのに役立ちます。

どのように機能するのか?

図にあるように、WebSocketベースのソリューションはクライアントサイドとサーバーサイドで構成されています。WebSocketのネイティブクライアント側のサポートは、Google Chrome、Internet Explorer、Safariなどの一般的なWebブラウザのほとんどで利用可能です。WebSocketのサーバー側のサポートは、双方向通信を可能にする完全なソリューションになります。ネイティブのWebSocketをサポートするブラウザであれば、HTML5 WebSocket APIを使用して、シンプルなHTMLとJavaScriptベースのクライアント・アプリケーションを実行できるはずです。

WebSocket接続は、最初のHTTP互換ハンドシェイクから始まります。これは、WebSocket接続がデフォルトのHTTP(80)とHTTPS(443)ポートを共有できるように、後方互換性を保証します。ハンドシェイクに成功すると、2つのエンティティの一方が接続を終了するまで、接続はデータ交換のためにオープンされます。

WebSocketプロトコルは、安全でないWebSocketリクエストと安全なWebSocketリクエストを表すために、それぞれws: とwss: URLスキームを使用します。最初のハンドシェイクの間に、プロキシサーバーが検出された場合、プロトコルはプロキシにHTTP CONNECT ステートメントを発行してトンネルをセットアップしようとする。プロキシを処理するトンネルのアプローチはリクエストの種類に関係なく使用されるが、安全な接続ではTLS(Transport Layer Security)の方がうまく動作することが証明されている。

典型的な使用例

WebSocketは以下のようなシナリオに最適です、

  • 提示されるデータが最新でなければならない、
  • 低ネットワーク遅延と最小限のデータ交換が重要です。

例えば、インスタントメッセージング、オンラインゲーム、オンライン株式取引などです。

Qt WebSockets の役割

Qt WebSocketsモジュールは、WebSocketベースのサーバーおよびクライアントアプリケーションを開発するためのAPIを提供します。これらの API の使用例としては、株価データを提供するサーバーアプリケーションと、いくつかの銘柄の株価が変化したときにプッシュ通知を登録するクライアントアプリケーションがあります。

このモジュールでは、C++ 版と QML 版の両方の API を提供しているので、ニーズに合った選択肢を選ぶことができます。

Qt WebSockets とクラウドサービス

クライアントアプリケーションは通常、データを外部サービスに依存しています。これらのサービスプロバイダのほとんどはまだ WebSocket をサポートしていないため、ギャップを埋めるために WebSocket 対応のサーバーアプリケーションを開発することになります。クラウド・サービスのような企業向けWebSocketゲートウェイ・サービス上でサーバーを実行すれば、そのようなサービスをホストするために必要なインフラを維持する手間を省くことができる。

ほとんどのクラウド・サービスは、Platform as a Service(PaaS)バックエンドを提供しており、クラウド上にサーバー・アプリケーションのインスタンスをデプロイして実行することができます。クライアントアプリケーションは、WebSocket URLを使用して実行中のサーバーに接続し、データを受信することができます。

©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。