QGrpcHttp2Channel Class
La clase QGrpcHttp2Channel proporciona una capa de transporte HTTP/2 para la gRPC™ comunicación. Más...
| Cabecera: | #include <QGrpcHttp2Channel> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Grpc)target_link_libraries(mytarget PRIVATE Qt6::Grpc) |
| Desde: | Qt 6.5 |
| En QML: | GrpcHttp2Channel |
| Hereda: | QAbstractGrpcChannel |
Funciones Públicas
| QGrpcHttp2Channel(const QUrl &hostUri) | |
| QGrpcHttp2Channel(const QUrl &hostUri, const QGrpcChannelOptions &options) | |
| virtual | ~QGrpcHttp2Channel() override |
| QUrl | hostUri() const |
Descripción detallada
La clase QGrpcHttp2Channel implementa QAbstractGrpcChannel, permitiendo gRPC™ comunicación a través de HTTP/2.
HTTP/2 introduce varias ventajas sobre su predecesor, HTTP/1.1, haciendo que QGrpcHttp2Channel sea muy adecuado para aplicaciones de alto rendimiento y en tiempo real que requieren una comunicación eficiente, sin sacrificar la seguridad o la fiabilidad, mediante el uso de conexiones TCP multiplexadas.
El canal puede ser personalizado con soporte SSL, un serializationFormat personalizado, u otras opciones construyéndolo con un QGrpcChannelOptions que contenga las personalizaciones requeridas.
Nota: QGrpcChannelOptions::filterServerMetadata está activado por defecto.
Esquema de transporte
La implementación de QGrpcHttp2Channel prefiere diferentes métodos de transporte basados en el hostUri, scheme y las opciones proporcionadas. Se aplican los siguientes criterios:
| Esquema | Descripción | Puerto por defecto | Requisitos | Ejemplo |
|---|---|---|---|---|
http | HTTP/2 no cifrado sobre TCP | 80 | Ninguno | http://localhost |
https | HTTP/2 cifrado con TLS sobre TCP | 443 | QSslSocket soporte AND (scheme OR sslConfiguration) | https://localhost |
unix | Socket de dominio Unix en la ruta del sistema de archivos | ✗ | QLocalSocket soporte AND esquema | unix:///tmp/grpc.socket |
unix-abstract | Socket de dominio Unix en espacio de nombres abstracto | ✗ | QLocalSocket support AND AbstractNamespace support AND scheme | unix-abstract:app_grpc_channel |
Tipo de contenido
El tipo de contenido en gRPC sobre HTTP/2 determina el formato de serialización del mensaje. Debe empezar por application/grpc y puede incluir un sufijo. El formato sigue este esquema:
"content-type": "application/grpc" [("+proto" / "+json" / {custom})]
Por ejemplo
application/grpc+protoespecifica la codificación Protobuf.application/grpc+jsonespecifica la codificación JSON.
El formato de serialización puede configurarse especificando content-type dentro de los metadatos o configurando directamente serializationFormat. Por defecto, se utiliza el tipo de contenido application/grpc.
Para configurar QGrpcHttp2Channel con el formato de serialización JSON utilizando los metadatos content-type:
auto jsonChannel = std::make_shared<QGrpcHttp2Channel>( QUrl("http://localhost:50051"_L1), QGrpcChannelOptions().setMetadata({ { "content-type"_ba, "application/grpc+json"_ba }, }) );
Para un serializador personalizado y content-type, puede configurar directamente el formato de serialización:
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) );
Esto utiliza DummySerializer para codificar y decodificar mensajes con el sufijo dummy. Para el transporte HTTP/2, esto da como resultado el tipo de contenido application/grpc+dummy.
Nota: Los serializadores personalizados requieren que el servidor soporte el formato especificado.
Véase también QAbstractGrpcChannel, QGrpcChannelOptions, y QGrpcSerializationFormat.
Documentación de las funciones miembro
[explicit] QGrpcHttp2Channel::QGrpcHttp2Channel(const QUrl &hostUri)
Construye QGrpcHttp2Channel con hostUri. Consulte la sección Transportation scheme para obtener más información.
[explicit] QGrpcHttp2Channel::QGrpcHttp2Channel(const QUrl &hostUri, const QGrpcChannelOptions &options)
Construye QGrpcHttp2Channel con hostUri y options. Consulte la sección Transportation scheme para obtener más información.
[override virtual noexcept] QGrpcHttp2Channel::~QGrpcHttp2Channel()
Destruye el objeto QGrpcHttp2Channel.
QUrl QGrpcHttp2Channel::hostUri() const
Devuelve el URI del host para este 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.