私のシナリオはGrpc双方向ストリーミング - サーバーはメッセージ交換を開始できますか?
サーバが開始
サーバーとクライアントは、クライアントにメッセージを送信し、(サーバがメッセージ交換を開始する)
クライアントがメッセージを受信している場合、応答
で返信、ありますですから、grpc-javaのサンプルコードで助けてください。
クライアントがメッセージをサーバーに送信するのは、そのサーバーが応答を返すためです。メッセージを送る
私のシナリオはGrpc双方向ストリーミング - サーバーはメッセージ交換を開始できますか?
サーバが開始
サーバーとクライアントは、クライアントにメッセージを送信し、(サーバがメッセージ交換を開始する)
クライアントがメッセージを受信している場合、応答
で返信、ありますですから、grpc-javaのサンプルコードで助けてください。
クライアントがメッセージをサーバーに送信するのは、そのサーバーが応答を返すためです。メッセージを送る
Serverはまず、私はgrpcは、RPC層でのクライアントへの真のサーバー開始の呼び出しをサポートしていないと思う双方向ストリーミング
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() {}
}
}
しかし、クライアントはまだ 'stub.echoTheServer'を呼び出すことでこれを開始します。 –
によって達成することができます。 user675693の答えのように、メッセージの双方向ストリーミングを使用して、アプリケーション層でこれを実装できます。 –