QGrpcHttp2Channel Class
QGrpcHttp2Channelクラスは、通信のためのHTTP/2トランスポート・レイヤーを提供する。 gRPC™通信を提供します。詳細...
ヘッダー | #include <QGrpcHttp2Channel> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Grpc) target_link_libraries(mytarget PRIVATE Qt6::Grpc) |
以来: | Qt 6.5 |
QML では | GrpcHttp2Channel |
継承: | QAbstractGrpcChannel |
パブリック関数
QGrpcHttp2Channel(const QUrl &hostUri) | |
QGrpcHttp2Channel(const QUrl &hostUri, const QGrpcChannelOptions &options) | |
virtual | ~QGrpcHttp2Channel() override |
QUrl | hostUri() const |
詳しい説明
QGrpcHttp2Channel クラスはQAbstractGrpcChannel を実装しています。 gRPC™を実装しています。
HTTP/2は、その前身であるHTTP/1.1よりもいくつかの利点を導入しており、QGrpcHttp2Channelは、多重化されたTCP接続を使用することで、セキュリティや信頼性を犠牲にすることなく、効率的な通信を必要とする高性能なリアルタイムアプリケーションに適しています。
このチャネルは、必要なカスタマイズを含むQGrpcChannelOptions を使って構築することで、SSLサポートやカスタムserializationFormat 、その他のオプションでカスタマイズすることができます。
転送スキーム
QGrpcHttp2Channelの実装は、提供されたhostUri
、scheme 、オプションに基づいて、さまざまな転送方式を好みます。以下の基準が適用されます:
スキーム | 説明 | デフォルトポート | 要件 | 例 |
---|---|---|---|---|
http | TCP上の暗号化されていないHTTP/2 | 80 | なし | http://localhost |
https | TLSで暗号化されたHTTP/2 over TCP | 443 | QSslSocket サポートAND(スキームOR sslConfiguration) | https://localhost |
unix | ファイルシステムパス内のUnixドメインソケット | ✗ | QLocalSocket サポートANDスキーム | unix:///tmp/grpc.socket |
コンテントタイプ
gRPC over HTTP/2のcontent-typeは、メッセージのシリアライズ形式を決定します。これはapplication/grpc
で始まり、接尾辞を含むことができます。フォーマットはこのスキームに従います:
"content-type": "application/grpc" [("+proto" / "+json" / {custom})]
例えば
application/grpc+proto
はProtobufエンコーディングを指定します。application/grpc+json
はJSONエンコーディングを指定します。
シリアライズ形式は、メタデータ内でcontent-type
を指定するか、serializationFormat を直接設定することで設定できます。デフォルトでは、application/grpc
content-typeが使用されます。
QGrpcHttp2ChannelをJSONシリアライズフォーマットで設定するには、content-type
メタデータを使用します:
auto jsonChannel = std::make_shared<QGrpcHttp2Channel>( QUrl("http://localhost:50051"_L1), QGrpcChannelOptions().setMetadata({ { "content-type"_ba, "application/grpc+json"_ba }, }) );
カスタムシリアライザとcontent-type
、直接シリアライズフォーマットを設定することができます:
class DummySerializer : public QAbstractProtobufSerializer { ... }; QGrpcSerializationFormat dummyFormat("dummy", std::make_shared<DummySerializer>());
auto dummyChannel = std::make_shared<QGrpcHttp2Channel>( QUrl("http://localhost:50051"_L1), QGrpcChannelOptions().setSerializationFormat(dummyFormat) );
これは、dummy
サフィックスを持つメッセージのエンコードとデコードにDummySerializer
を使用します。HTTP/2トランスポートでは、これはapplication/grpc+dummy
content-typeになります。
注意: カスタムシリアライザーは、指定されたフォーマットのサーバーサポートを必要とします。
QAbstractGrpcChannel 、QGrpcChannelOptions 、QGrpcSerializationFormatも参照してください 。
メンバ関数ドキュメント
[explicit]
QGrpcHttp2Channel::QGrpcHttp2Channel(const QUrl &hostUri)
QGrpcHttp2Channel をhostUri で構築します。詳細はTransportation scheme のセクションを参照してください。
[explicit]
QGrpcHttp2Channel::QGrpcHttp2Channel(const QUrl &hostUri, const QGrpcChannelOptions &options)
QGrpcHttp2Channel をhostUri とoptions で構築します。詳細はTransportation scheme のセクションを参照してください。
[override virtual noexcept]
QGrpcHttp2Channel::~QGrpcHttp2Channel()
QGrpcHttp2Channel オブジェクトを破棄する。
QUrl QGrpcHttp2Channel::hostUri() const
このチャネルのホスト URI を返します。
© 2025 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.