问题描述
我正在研究升级旧式TCP套接字协议的选项,该协议的任一端都可以启动消息/事务,并且gRPC对此很感兴趣。
我的标准是:
根据我到目前为止所读的内容,gRPC具备了所有这些功能。但是,我不清楚它是否具有对等功能。我感兴趣的行为是:
在我看来,为案例2定义服务器流是可行的。基本上是
// use case 2
rpc SubscribetoEvents(EventsSubscriptionRequest) returns (stream EventDescriptor);
但是在#2处于活动状态时,我还能使用案例#1吗?
// use case 1
rpc GetValue(ValueRequest) returns (ValueResponse);
在此先感谢您的帮助和建议。
解决方法
假设您使用多线程实现,则#1和#2可能同时存在。
但是,您描述的是客户端-服务器方案,而不是对等的;客户端必须同时启动#1(一元)和#2(流式)RPC。
真正的对等点将使端点实现客户端和服务器,以便任何一个对等点都可以针对另一个对等点发起(一元和/或流式传输)RPC。
,您可能希望双方都是客户端和服务器,如另一个答案所示。但是,如果您可以让客户端作为发起连接和流的对象,那么可以在两侧之间使用单个双向流。客户端启动流后,客户端和服务器就可以随时在流上发送消息。