Hi,
I am investigating the viability of using gRPC (C++ version) to replace our existing RPC framework at Electronic Arts and would appreciate if somebody can provide me some answers in order for me to make the best judgement. For most of our existing usage, I have an idea of how to do that via gRPC. However, few questions remain.
1. Detecting a dead client on server: Is there a way or recommended mechanism to detect a client who is no longer connected to the server after an abrupt client shutdown? In our current framework, we get a TCP level disconnect which then ends the user session. But looking around the gRPC code base and searching past discussions in the group, the connection layer is hidden away and this information is not exposed. Detecting a dead client early is important in scenarios where client's state may be important to other clients. We have many use cases for it. For example, if two players are connected in a game session and one of them goes away, we'd like to update the status of that person on other client's machine.
I was wondering if I have a bi-directional streaming RPC for the sole purpose of detecting a disconnect, would I get any error on that stream in case of an abrupt client shutdown? It did not seem like that from the async interface though (async_stream.h).
2. Server side connection management: Is there a doc that details the server side connection management? I am trying to figure out details like how long does a socket remain active for an inactive client? Is this a setting that can be customized? Are there any sort of connection metrics that are exposed to the application?
Appreciate your time.
Thanks
Arpit