Я создаю Android
приложение, которое использует gRPC
для связи с сервером. У меня мало способов обслуживания. Нет проблем со связью с использованием простого метода rpc, но у меня проблема с bidirectional streaming
.
Я получаю одно сообщение ServerToClient и после этого получаю сообщение об ошибке:
io.grpc.StatusRuntimeException: CANCELLED: Cancelled
Это мой сервис:
service CommunicationGateway {
[...]
rpc CommunicationChannel(stream ClientToServer) returns (stream ServerToClient) {}
}
Вот как я создаю ManagedChannel
, используя OkHttp
и заглушку:
this.channel = OkHttpChannelBuilder.forAddress(ip, port)
.useTransportSecurity()
.connectionSpec(ConnectionSpec.MODERN_TLS)
.sslSocketFactory(buildSslContext().socketFactory)
.keepAliveWithoutCalls(true)
.build()
this.asyncStub = CommunicationGatewayGrpc.newStub(this.channel)
А вот мой код для начала потоковой передачи:
val clientToServerRequest = asyncStub.communicationChannel(object : StreamObserver<Messages.ServerToClient> {
override fun onNext(value: Messages.ServerToClient) {
info("communicationChannel onNext $value")
}
override fun onError(t: Throwable) {
t.printStackTrace()
}
override fun onCompleted() {
info("communicationChannel onCompleted")
}
})
Это проблема с моим приложением (на стороне клиента) или на стороне сервера? Или как это проверить?