【发布时间】:2018-05-16 09:37:44
【问题描述】:
如何在调用任何操作服务时触发服务器端流服务 由客户?目前流服务器只能在客户端调用时发送响应。
【问题讨论】:
如何在调用任何操作服务时触发服务器端流服务 由客户?目前流服务器只能在客户端调用时发送响应。
【问题讨论】:
我认为这是不可能的。 gRPC 是请求/响应类型的协议。客户端必须调用相关的流式 RPC 才能让服务器进行流式传输。
【讨论】:
我今天解决了这个问题。当用户订阅流时,将订阅请求和流观察器保存在数组列表/普通列表中。稍后当调用任何操作服务时。创建流服务的新实例(扩展 ServerStreamServiceGrpc.ServerStreamServiceImplBase)并使用数组列表中的参数从这个新实例调用所需的流服务。您不需要使用与创建服务器相同的服务实例。当用户取消订阅流时,只需从数组列表中删除该订阅即可。确保当您从流服务发送任何数据时不会调用 onCompleted(),因为它将终止订阅。这里的流媒体是指服务器端流媒体。
【讨论】: