#swift #rust #grpc #grpc-swift #rust-tonic
Вопрос:
Я провел много исследований, но не смог найти решение своей проблемы с gRPC:
Сводка; После сбоя моего клиентского приложения swift gRPC клиент gRPC больше не может подключиться к моему серверу gRPC (см. Ошибки ниже)
Моя настройка: У меня есть интерфейсное приложение Swift и серверная часть Rust. Серверная часть rust запускает сервер gRPC (tonic) https://github.com/hyperium/tonic на который клиент rust (также тонизирующий) и клиент Swift (https://github.com/grpc/grpc-swift) может подключаться к. После сбоя клиента Swift ни один из клиентов больше не может подключиться к серверу.
Клиент rust сообщает: Error: Status { code: Cancelled, message: "h2 protocol error: protocol error: stream no longer needed" }
Клиент swift сообщает: StreamClosed(streamID: HTTP2StreamID(1), errorCode: HTTP2ErrorCode<0x8 Cancel>, location: ".../swift-nio-http2/Sources/NIOHTTP2/HTTP2StreamChannel.swift:820")
То, что я пробовал, я настроил http2 keepalive
на сервере, но это ничего не дало. Я попытался воспроизвести тот же эффект, целенаправленно разбив клиент rust, но безуспешно.
Я даже не уверен, стоит ли смотреть на библиотеки swift-grpc и tonic или на сам grpc (для меня это выглядит так, как будто сервер специально закрывает поток)..
У кого-нибудь есть идеи, что я мог бы сделать, чтобы это исправить? Заранее спасибо!