Magic 8 Ball▲
Magic 8 ball shows an answer it receives from a server:

Magic 8 ball has the following components:
-
magic8ball Qt GRPC client application that includes the qt_add_protobuf() and qt_add_grpc() CMake functions for message and service Qt code generation.
-
SimpleGrpcServer application that calls C++ gRPC plugin for generating server code and implementing simple server logic.
you need the C++ gRPC plugin installed. Find details here: Module prerequisites
Both components use generated messages from the protobuf schema described in the exampleservice.proto file:
syntax =
"proto3"
;
package qtgrpc.examples;
message AnswerRequest {
string message =
1
;
}
message AnswerResponse {
string message =
1
;
}
service ExampleService {
rpc answerMethod(AnswerRequest) returns (AnswerResponse) {}
}
The client application connects to the localhost with port 50051:
id
:
channelOptions
host
:
"http://localhost:50051"
And sends a request to the server part:
function sendRequest()
{
grpcClient.answerMethod(_answerReq, setResponse, errorCallback)
}
Click the Ask question button to send the request to the SimpleGrpcServer application.
The SimpleGrpcServer application chooses a random answer from the list of answers and sends the data to the client's port.
Status ExampleServiceServiceImpl::
answerMethod(grpc::
ServerContext *
,
const
AnswerRequest *
request,
AnswerResponse *
response)
{
if
(request-&
gt;message() ==
"sleep"
)
QThread::
msleep(2000
);
response-&
gt;set_message(std::
string(answers[generateRandomIndex()]));
return
Status();
}
After receiving a response the client application shows the answer.