Is there any way to do the invoke call from server to the client with Protobuf RPC(while custom call from client to the server, not directly)?
I'm meaning, for example, describe service method in *.proto file with callback param?
Im using gRPC library.
grpc::Server::GlobalCallbacks Class Referenceabstract. Global callbacks are a set of hooks that are called when server events occur.
It is an adaptation of traditional RPC frameworks. So what makes it different from the existing RPC frameworks? The most important difference is that gRPC uses protocol buffers as the interface definition language for serialization and communication instead of JSON/XML.
Multiple gRPC clients can be created from a channel, including different types of clients. A channel and clients created from the channel can safely be used by multiple threads. Clients created from the channel can make multiple simultaneous calls.
The gRPC programming API in most languages comes in both synchronous and asynchronous flavors. You can find out more in each language's tutorial and reference documentation (complete reference docs are coming soon).
The general way to do server->client messages in gRPC is through "streaming". That is, the client makes a call to the server, and then the server can "stream" back a series of messages to the client before eventually completing the call.
See: http://www.grpc.io/docs/guides/concepts.html#server-streaming-rpc
Of course, "streaming" is a pretty different pattern from a traditional "callback", but you can often solve the same problems with it.
Note that Cap'n Proto RPC -- an alternative to Protobuf and gRPC -- fully supports calls in both directions by virtue of supporting object references as a first-class type: a client can, for example, make a call to the server in which it provides an object reference to use for callbacks, and then the server can later on make calls back to that object on the client.
(Disclosure: I am the author of Google's Protobuf v2 and also the author of Cap'n Proto, but I am not affiliated with gRPC.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With