Я создал микросервис для веб-трансляции с помощью grpc. потоковая передача работает нормально, но отмена потока работает только на стороне клиента.
если клиент вызывает CancellableContext.cancel, потоковая передача видео останавливается, но сервер по-прежнему передает видео с камеры. если отмена вызывается, сервер выдает исключение сбоя транспорта.
можно ли перехватить это исключение для остановки потоковой передачи или других операций на стороне сервера?
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)
Я читал, что это может быть ошибка.
можно ли получить сеансы или подключения или что-то еще на стороне сервера?
Благодарность