Qt WebSockets 概要
Qt WebSockets を使用すると、WebSocket 対応のアプリケーションを構築できます。これは、既存の Web インフラストラクチャを利用した双方向通信のより優れた代替手段として、IETF(Internet Engineering Task Force)によって提供されている WebSocket プロトコルの実装を提供します。
従来、双方向通信やプッシュ通知を必要とするWebアプリケーションは、利用可能な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)ポートを共有できるようになります。ハンドシェイクが成功すると、接続はデータ交換のために開かれた状態となり、いずれかのエンティティが接続を終了するまで維持されます。
WebSocketプロトコルでは、ws:およびwss:というURLスキームを、それぞれ非セキュアおよびセキュアなWebSocketリクエストを表すために使用します。 初期ハンドシェイク中にプロキシサーバーが検出された場合、プロトコルはプロキシに対してHTTP CONNECT ステートメントを発行することで、トンネルの確立を試みます。プロキシを処理するためのこのトンネル方式は、リクエストの種類にかかわらず使用されますが、セキュアな接続ではTLS(Transport Layer Security)と併用した方がより効果的に機能することが実証されています。
代表的なユースケース
WebSocketは、次のようなシナリオに最適です。
- 提示されるデータが最新である必要があり、
- ネットワークの遅延が低く、データ交換量を最小限に抑えることが不可欠なシナリオに最適です。
従来のアプローチではこれらを実現するのが困難なアプリケーションの例としては、インスタントメッセージング、オンラインゲーム、オンライン株式取引などが挙げられます。
xml-ph-0000@deepl.internalモジュールの役割Qt WebSockets
Qt WebSockets モジュールは、WebSocketベースのサーバーおよびクライアントアプリケーションを開発するためのAPIを提供します。これらのAPIが活用できる例としては、株価データを提供するサーバーアプリケーションや、特定の銘柄の価格変動時にプッシュ通知を受け取るように登録するクライアントアプリケーションなどが挙げられます。
このモジュールは、C++版とQML版のAPIの両方を提供しているため、ニーズに合わせて適切な選択肢を選ぶことができます。
Qt WebSockets クラウドサービスとの連携
クライアントアプリケーションは通常、データ取得のために外部サービスに依存します。こうしたサービスプロバイダーの多くは、まだWebSocketに対応していないため、そのギャップを埋めるために、WebSocketに対応したサーバーアプリケーションを開発することになります。 クラウドサービスなどのエンタープライズ向けWebSocketゲートウェイサービス上でサーバーを実行することで、そのようなサービスをホストするために必要なインフラストラクチャを維持管理する手間を省くことができます。
ほとんどのクラウドサービスは、Platform as a Service(PaaS)バックエンドを提供しており、これによりサーバーアプリケーションのインスタンスをクラウド上にデプロイして実行することが可能です。クライアントアプリケーションは、WebSocket URL を使用して実行中のサーバーに接続し、データを受信できます。
関連情報
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.