GRPC Java 服务器服务

GRPC Java Server Service

如何在调用任何动作服务时触发服务器端流媒体服务 由客户?目前流媒体服务器只能在客户端调用时发送响应。

我认为这是不可能的。 gRPC 是 request/response 类型的协议。客户端必须调用相关的流式 RPC 才能让服务器进行流式传输。

我今天解决了这个问题。当用户订阅流时,将订阅请求和流观察者保存在数组列表/普通列表中。稍后调用任何操作服务时。创建 Stream 服务的新实例(扩展 ServerStreamServiceGrpc.ServerStreamServiceImplBase)并使用数组列表中的参数从这个新实例调用所需的流服务。您不需要使用用于创建服务器的相同服务实例。当用户取消订阅流时,也只需从数组列表中删除该订阅。确保在您从流媒体服务发送任何数据时不会调用 onCompleted(),因为它会终止订阅。这里的推流指的是服务端推流。