gRPC Java客户端-onNext期间是否具有hasNext?

时间:2018-12-10 18:00:53

标签: grpc grpc-java

我有一个服务器端流式gRPC服务,该服务可能很快就会收到消息。拥有客户端功能的一个好方法是,知道此onNext执行准备在UI中显示时,已经有更多更新排队了,因为我只是简单地显示下一个。

    StreamObserver< Info > streamObserver = new StreamObserver< info >( )
    {

        @Override
        public void onNext( Info info )
        {
              doStuffForALittleWhile();
              if( !someHasNextFunction() )
                   render();
        }
    }

有一些我不知道的下一步功能或检测方法吗?

2 个答案:

答案 0 :(得分:1)

没有API可以确定是否已收到其他消息,但尚未将其传递给应用程序。

使用更高级的ClientCall / ClientCall.Listener API实现客户端存根API(例如StreamObserver)。它不提供任何已收到但尚未发送的提示。

在内部,gRPC延迟处理消息。 gRPC等待,直到应用程序准备好接收更多消息(通常通过从StreamObserver.onNext()返回)来尝试解码另一条消息。如果它解码了另一条消息,那么它将立即开始传递该消息。

答案 1 :(得分:1)

一种方法是使用onNext的消息创建一个小的缓冲区。这样一来,您就应该将当前的消息发送出去,然后查看是否在此同时到达了另一个消息。