魔法8球

在 Qt GRPC 客户端和 C++ gRPC 服务器之间创建 HTTP2 连接。

魔法8球显示从服务器收到的答案

魔法8球包含以下组件

  • magic8ball Qt GRPC 客户端应用程序,包含生成消息和服务的 Qt 代码的 qt_add_protobuf()qt_add_grpc() CMake 函数。
  • SimpleGrpcServer 应用程序,调用 C++ gRPC 插件以生成服务器代码并实现简单的服务器逻辑。

注意:您需要安装 C++ gRPC 插件。详细信息请见: 模块先决条件

这两个组件都使用 exampleservice.proto 文件中描述的 protobuf 模式的生成消息。

syntax = "proto3";

package qtgrpc.examples;

message AnswerRequest {
    string message = 1;
}

message AnswerResponse {
    string message = 1;
}

service ExampleService {
    rpc answerMethod(AnswerRequest) returns (AnswerResponse) {}
}

客户端应用程序连接到 localhost 的端口 50051

            id: channelOptions
            host: "http://localhost:50051"

并向服务器部分发送请求

    function sendRequest()
    {
        grpcClient.answerMethod(_answerReq, setResponse, errorCallback)
    }

点击 提问 按钮,将请求发送到 SimpleGrpcServer 应用程序。

SimpleGrpcServer 应用程序从答案列表中随机选择一个答案并将数据发送到客户端的端口。

Status ExampleServiceServiceImpl::answerMethod(grpc::ServerContext *,
                                               const AnswerRequest *request,
                                               AnswerResponse *response)
{
    if (request->message() == "sleep")
        QThread::msleep(2000);

    response->set_message(std::string(answers[generateRandomIndex()]));
    return Status();
}

客户端应用程序在接收到响应后显示答案。

示例项目 @ code.qt.io

© 2024 The Qt Company Ltd. 本文档中的文档贡献是各自所有者的版权。本提供的文档是根据由自由软件基金会发布的 GNU 自由文档许可证版本 1.3 许可的。Qt 和相应的徽标是芬兰及其它国家和地区 The Qt Company Ltd. 的商标。所有其他商标均为其各自所有者的财产。