マジック8ボール

Qt GRPCクライアントとC++ gRPCサーバー間のHTTP2接続の作成。

Magic 8 ball はサーバーから受け取った応答を表示します:

Magic 8 Ball には以下のコンポーネントがあります:

  • magic8ball qt_add_protobuf()qt_add_grpc()を含む Qt GRPC クライアントアプリケーション。
  • 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) {}
}

クライアントアプリケーションはポート50051localhost に接続する:

        id: grpcChannel
        hostUri: "http://localhost:50051"

そしてサーバーパートにリクエストを送信します:

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

SimpleGrpcServerアプリケーションにリクエストを送信するには、Ask question ボタンをクリックします。

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. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。