2017-08-08 8 views
1

私のシナリオはGrpc双方向ストリーミング - サーバーはメッセージ交換を開始できますか?

サーバが開始

サーバーとクライアントは、クライアントにメッセージを送信し、(サーバがメッセージ交換を開始する)

クライアントがメッセージを受信して​​いる場合、応答

で返信、ありますですから、grpc-javaのサンプルコードで助けてください。

クライアントがメッセージをサーバーに送信するのは、そのサーバーが応答を返すためです。メッセージを送る

+0

によって達成することができます。 user675693の答えのように、メッセージの双方向ストリーミングを使用して、アプリケーション層でこれを実装できます。 –

答えて

0

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() {} 
    } 
} 
+0

しかし、クライアントはまだ 'stub.echoTheServer'を呼び出すことでこれを開始します。 –

関連する問題