Server GRPC Java服务器服务

Server GRPC Java服务器服务,server,rpc,grpc-java,Server,Rpc,Grpc Java,当调用任何操作服务时,如何触发服务器端流式服务 由客户负责?目前,流媒体服务器只能在客户端调用时发送响应。我认为这是不可能的。gRPC是请求/响应型协议。客户端必须调用相关的流式RPC,服务器才能进行流式处理。我今天解决了这个问题。当用户订阅流时,将订阅请求和流观察者保存在数组列表/普通列表中。稍后调用任何操作服务时。创建流服务的新实例(它扩展了ServerStreamServiceGrpc.serverstreamserviceinmplbase),并使用数组列表中的参数从此新实例调用所需的流

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

我认为这是不可能的。gRPC是请求/响应型协议。客户端必须调用相关的流式RPC,服务器才能进行流式处理。

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

这是可能的。我们使用Golang制作了GRPC服务器,并实现了同样的功能。(即,在调用任何操作服务时触发服务器端流式服务)。我不知道用Java怎么做。考虑一个例子,服务器想要不断地把信息流到房间里的已有玩家,关于加入了房间/服务器的玩家。