【问题标题】:GRPC Java Server ServiceGRPC Java 服务器服务
【发布时间】:2018-05-16 09:37:44
【问题描述】:

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

【问题讨论】:

    标签: server rpc grpc-java


    【解决方案1】:

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

    【讨论】:

    • 有可能。我们使用 Golang 制作了 GRPC 服务器并实现了相同的功能。 (即在调用任何操作服务时触发服务器端流服务)。我不知道如何用Java做。考虑一个示例,服务器希望不断向房间中的现有玩家流式传输有关已加入房间/服务器的玩家的信息。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 1970-01-01
      • 2021-10-21
      • 1970-01-01
      • 2020-09-09
      • 2020-07-07
      • 1970-01-01
      • 2017-05-28
      • 2020-05-29
      相关资源
      最近更新 更多