Sur cette page

QGrpcHttp2Channel Class

La classe QGrpcHttp2Channel fournit une couche de transport HTTP/2 pour la gRPC communication. Plus d'informations...

En-tête : #include <QGrpcHttp2Channel>
CMake : find_package(Qt6 REQUIRED COMPONENTS Grpc)
target_link_libraries(mytarget PRIVATE Qt6::Grpc)
Depuis : Qt 6.5
En QML : GrpcHttp2Channel
Hérites : QAbstractGrpcChannel

Fonctions publiques

QGrpcHttp2Channel(const QUrl &hostUri)
QGrpcHttp2Channel(const QUrl &hostUri, const QGrpcChannelOptions &options)
virtual ~QGrpcHttp2Channel() override
QUrl hostUri() const

Description détaillée

La classe QGrpcHttp2Channel implémente QAbstractGrpcChannel, permettant une communication gRPC la communication par le biais d'une trame HTTP/2.

HTTP/2 présente plusieurs avantages par rapport à son prédécesseur, HTTP/1.1, ce qui rend QGrpcHttp2Channel bien adapté aux applications en temps réel à haute performance qui nécessitent une communication efficace, sans sacrifier la sécurité ou la fiabilité, en utilisant des connexions TCP multiplexées.

Le canal peut être personnalisé avec la prise en charge de SSL, un serializationFormat personnalisé ou d'autres options en le construisant avec un QGrpcChannelOptions contenant les personnalisations requises.

Remarque : QGrpcChannelOptions::filterServerMetadata est activé par défaut.

Schéma de transport

L'implémentation de QGrpcHttp2Channel préfère différentes méthodes de transport basées sur les hostUri, scheme et les options fournies. Les critères suivants s'appliquent :

SchémaDescription de la méthodePort par défautExigencesExemple
httpHTTP/2 non chiffré sur TCP80Aucunhttp://localhost
httpsHTTP/2 chiffré par TLS sur TCP443QSslSocket support AND (scheme OR sslConfiguration)https://localhost
unixSocket de domaine Unix dans le chemin du système de fichiersQLocalSocket support AND schemeunix:///tmp/grpc.socket
unix-abstractsocket de domaine Unix dans l'espace de noms abstraitQLocalSocket support ET AbstractNamespace support ET schémaunix-abstract:app_grpc_channel

Type de contenu

Le type de contenu dans gRPC sur HTTP/2 détermine le format de sérialisation du message. Il doit commencer par application/grpc et peut inclure un suffixe. Le format suit ce schéma :

"content-type": "application/grpc" [("+proto" / "+json" / {custom})]

Par exemple :

  • application/grpc+proto spécifie l'encodage Protobuf.
  • application/grpc+json spécifie le codage JSON.

Le format de sérialisation peut être configuré soit en spécifiant le content-type dans les métadonnées, soit en définissant directement le serializationFormat. Par défaut, le type de contenu application/grpc est utilisé.

Pour configurer QGrpcHttp2Channel avec le format de sérialisation JSON en utilisant les métadonnées content-type:

auto jsonChannel = std::make_shared<QGrpcHttp2Channel>(
    QUrl("http://localhost:50051"_L1),
    QGrpcChannelOptions().setMetadata({
        { "content-type"_ba, "application/grpc+json"_ba },
    })
);

Pour un sérialiseur personnalisé et content-type, vous pouvez définir directement le format de sérialisation :

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)
);

Ceci utilise DummySerializer pour encoder et décoder les messages avec le suffixe dummy. Pour le transport HTTP/2, cela se traduit par le type de contenu application/grpc+dummy.

Remarque : les sérialiseurs personnalisés doivent être pris en charge par le serveur pour le format spécifié.

Voir aussi QAbstractGrpcChannel, QGrpcChannelOptions, et QGrpcSerializationFormat.

Documentation des fonctions membres

[explicit] QGrpcHttp2Channel::QGrpcHttp2Channel(const QUrl &hostUri)

Construit QGrpcHttp2Channel avec hostUri. Veuillez consulter la section Transportation scheme pour plus d'informations.

[explicit] QGrpcHttp2Channel::QGrpcHttp2Channel(const QUrl &hostUri, const QGrpcChannelOptions &options)

Construit QGrpcHttp2Channel avec hostUri et options. Veuillez consulter la section Transportation scheme pour plus d'informations.

[override virtual noexcept] QGrpcHttp2Channel::~QGrpcHttp2Channel()

Détruit l'objet QGrpcHttp2Channel.

QUrl QGrpcHttp2Channel::hostUri() const

Renvoie l'URI de l'hôte pour ce canal.

© 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.