En esta página

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:

EsquemaDescripciónPuerto por defectoRequisitosEjemplo
httpHTTP/2 no cifrado sobre TCP80Ningunohttp://localhost
httpsHTTP/2 cifrado con TLS sobre TCP443QSslSocket soporte AND (scheme OR sslConfiguration)https://localhost
unixSocket de dominio Unix en la ruta del sistema de archivosQLocalSocket soporte AND esquemaunix:///tmp/grpc.socket
unix-abstractSocket de dominio Unix en espacio de nombres abstractoQLocalSocket support AND AbstractNamespace support AND schemeunix-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+proto especifica la codificación Protobuf.
  • application/grpc+json especifica 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.