Thanks for taking time to respond. We have been doing Keep Alive Pings every 30 seconds(even if there is no data) to keep the channel live.
I had one more follow up question to check if you have any ideas on it.
Currently the gRPC server is running on Kubernetes POD streaming out the data to Client. Server POD is responsible for reading from AWS Kinesis and pushing this out to our customers for sensor data. Data is sharded based on the Device ID and hence when I start more instances of gRPC Server POD, it helps distribute the load between multiple pods as each pod will read a few shards from AWS Kinesis. But now the question is how can the client needs to establish connectivity to these new pods. Otherwise they will miss out the data retrieved from these shards.
Clients will need to open connections to these pods individually or can we use load balancers ? Challenge with load balancer is it has to read data from all underlying servers and not any one of servers at a time.