マジック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) {} }
クライアントアプリケーションはポート50051
でlocalhost
に接続する:
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(); }
応答を受信すると、クライアントアプリケーションはその答えを表示します。
©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。