I'm looking at using gRPC for a project of mine but am having problems understanding if my needs are supported by gRPC. Before jumping into code and trying via trial and error I thought I would ask here for faster turn around.
I have a two processes running on a machine and am looking to use gRPC for the IPC between them. The client will send many various async unary RPCs to the server. But I also want the server to be able to send "push notifications" (usually work progress information, but some potentially unsolicited) to the client. The latter is where I am getting stuck. Here are what I believe are my options.
Option 1) The client opens many long-lived server streams.
But can server streams multiplex? Can the client stay async and continue to make requests and accept responses (some server streaming some not) from the server? I most definitely want to have the server processing multiple requests at once and sending request progress to the client simultaneously.
Option 2) Both processes function bidirectionally as a client and a server. Meaning "push notifications" are simply the server acting as a client, and the client acting as a server.
Not ideal since I assume this would take two sockets and multiple channels? Plus the proto definitions get wonky when we have the client defining Services.
Are there other options I am missing? Thanks!