Hello,
Please help to setup the detection of the client disconnect on a server side.
and my code on server side is:
...
ServerBuilder builder;
builder.AddListeningPort(server_address, grpc::InsecureServerCredentials());
builder.RegisterService(this);
builder.AddChannelArgument(GRPC_ARG_KEEPALIVE_TIME_MS, 30000);
builder.AddChannelArgument(GRPC_ARG_KEEPALIVE_TIMEOUT_MS, 2000);
builder.AddChannelArgument(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS, 1);
builder.AddChannelArgument(GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS, 9000);
builder.AddChannelArgument(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA, 0);
builder.AddChannelArgument(GRPC_ARG_HTTP2_MAX_PING_STRIKES, 2);
builder.AddChannelArgument(GRPC_ARG_MAX_MESSAGE_LENGTH, 1024 * 1024 * 8);
etc...
and on client side is:
grpc::ChannelArguments args;
args.SetLoadBalancingPolicyName("round_robin");
args.SetMaxReceiveMessageSize(MAX_RECEIVE_MESSAGE_SIZE);
args.SetMaxSendMessageSize(MAX_SEND_MESSAGE_SIZE);
args.SetInt(GRPC_ARG_KEEPALIVE_TIME_MS, 30000);
args.SetInt(GRPC_ARG_KEEPALIVE_TIMEOUT_MS, 2000);
args.SetInt(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS, 1);
args.SetInt(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA, 0);
m_channel = grpc::CreateCustomChannel(target, grpc::InsecureChannelCredentials(), args);
auto ptr_stub = Rnd::NewStub(m_channel);
etc...
But when the client application closes, nothing happens on the server side.
It is built with gRPC Callback API.
I also wondering what should I expect on a server side as an indication of the fact that the client has disconnected... Any callback to overwrite? Any server's property to check periodically?
Thank you.