Hello,
I have a server with several clients. From time to time, the server must
send a notification to some clients.
I can’t find a proper way to do this. I had 2 different solutions to do
that:
1. Create an RPC function which returns a stream of notifications.
Something like:
rpc GetNotification(google.protobuf.Empty) returns (stream Notification) {}
The client would call this function “permanently” in a dedicated thread
with the async interface:
stub->AsyncGetNotification(...)
...
while (!stopped) {
nextStatus = completionQueue.AsyncNext(...);
if (nextStatus == grpc::CompletionQueue::GOT_EVENT) {
// handle the notification
...
}
}
On the server side, the GetNotification function would just write the
notification when there is no notification to send, and would do nothing
the rest of the time.
But this means that there would be as many GetNotification functions
executed at the same time as there are connected clients. I don’t expect to
have much clients running at the same time (let’s say ~10-20), but I don’t
like that much.
2. Create a simple RPC function which returns a notification:
rpc GetNotification(google.protobuf.Empty) returns (Notification) {}
The client would call it periodically (let’s say every 5 seconds) and would
handle the notification if there is one, and would do nothing if there is
none.
On the server side, the GetNotification function would return an empty
notification if there is none, or the notification with the appropriate
data when needed.
I don’t like this solution much because it is not really efficient.
Is there a better solution than the two above ones?
Otherwise, which one is the best?
Thanks.
Julien
--
You received this message because you are subscribed to the Google Groups
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit
https://groups.google.com/d/msgid/grpc-io/165d6bfb-73dd-462a-a1c9-97b7b0622f0c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.