grpcを使用してwebcam-streamのマイクロサービスを作成しました。ストリーミングは正常に機能しますが、ストリームのキャンセルはクライアント側でのみ機能します。GRPCサーバーがクライアントをキャンセルする
クライアントがCancellableContext.cancelを呼び出すと、ビデオのストリーミングは停止しますが、サーバーはまだカムでビデオをストリーミングしています。取り消しが呼び出された場合、サーバーはTransport faild Exceptionをスローします。
この例外は、サーバー側でストリーミングやその他の操作を停止するためにキャッチできますか?
ClientCall<KameraStreamRequest, KameraStreamResponse> call = (ClientCall) imageStreamBlockingStub.getChannel().newCall(ImageStreamServiceGrpc.METHOD_IMAGE_DATA_STREAM, imageStreamBlockingStub.getCallOptions());
call.sendMessage(KameraStreamRequest.newBuilder().setStreamState(StreamState.STOP).build());
ストリーミングは、State.STARTで列挙された単純な要求で開始されます。上記のコードを呼び出して状態をSTOPに変更すると、例外になります。
Exception in thread "main" java.lang.IllegalStateException: Not started
at com.google.common.base.Preconditions.checkState(Preconditions.java:174)
at io.grpc.internal.ClientCallImpl.sendMessage(ClientCallImpl.java:388)
at org.cpm42.grpcservice.ImageStreamClient.cancelStream(ImageStreamClient.java:70)
at org.cpm42.main.StreamClientMainClass.main(StreamClientMainClass.java:21)
これはバグかもしれないと読んでいます。
セッションや接続などをサーバー側で取得することは可能ですか?
おかげ