一元 gRPC - 客户端定期轮询服务器

Unary gRPC - Client polling server periodically

我正在为 .Net 使用 gRPC.Core。我已经设置了一个简单的 gRPC 服务和一个可以发送请求并使用到服务器端点的通道接收响应的客户端。我有一个场景,客户端需要定期轮询服务器以查看是否有任何工作需要占用。是否有使用一元 gRPC 的此类实现的示例?

Your question is generic and unrelated to gRPC; it just so happens that you want to use gRPC to implement it. By also not including your attempt at a solution, it may be down-voted.

您可以向您的服务添加一个 rpc AnyWork,它可能还包含一条消息,该消息定义了客户可能承担的工作的具体细节。服务器将实施该方法,如果有任何符合条件的工作可用,它将向客户端提供|描述它。

轮询效率低下。如果您有许多客户端反复向服务器请求工作,服务器可能会花费过多的时间来响应这些请求。

更好的方法是考虑服务器 (!) 在工作出现时触发事件(发送消息):

  • 客户端从服务器订阅流;
  • 服务器在客户端 (!) 上启动 (!)rpc