2

我的情况是,

服务器和客户端启动

服务器向客户端发送消息,(服务器发起消息交换)

客户端收到消息并回复响应

如果是这样,请帮助我使用 grpc-java 示例代码。

我所能找到的只是客户端将消息发送到服务器,因为该服务器会发回响应。

4

1 回答 1

0

服务器先发送消息可以通过双向流实现

https://grpc.io/docs/reference/java/generated-code.html

// Client Side:
volatile StreamObserver<Message> requestOb;

StreamObserver<Message> responseOb = new StreamObserver<>() {
  @Override public void onNext(Message msg) { requestOb.onNext(msg); }
  @Override public void onError(Throwable t) { requestOb.onError(t); }
  @Override public void onCompleted() { requestOb.onCompleted(); }
}
requestOb = stub.echoTheServer(responseOb);

// Server side:
@Override
public StreamObserver<Message> echoTheServer(StreamObserver<Message> responseOb) {
  for (int i = 0; i < 100; i++) {
    responseOb.onNext(new Message());
  }
  responseOb.onComplete();
  return new StreamObserver<Message>() {
    @Override public void onNext(Message msg) {}
    @Override public void onError(Throwable t) { responseOb.onError(t); }
    @Override public void onCompleted() {}
  }
}
于 2017-08-08T23:52:30.190 回答