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éma | Description de la méthode | Port par défaut | Exigences | Exemple |
|---|---|---|---|---|
http | HTTP/2 non chiffré sur TCP | 80 | Aucun | http://localhost |
https | HTTP/2 chiffré par TLS sur TCP | 443 | QSslSocket support AND (scheme OR sslConfiguration) | https://localhost |
unix | Socket de domaine Unix dans le chemin du système de fichiers | ✗ | QLocalSocket support AND scheme | unix:///tmp/grpc.socket |
unix-abstract | socket de domaine Unix dans l'espace de noms abstrait | ✗ | QLocalSocket support ET AbstractNamespace support ET schéma | unix-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+protospécifie l'encodage Protobuf.application/grpc+jsonspé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.