Есть ли необходимость воссоздать новый поток на стороне клиента gprc stream? - PullRequest
0 голосов
/ 11 октября 2019

Существует потоковый сервер gRPC и клиент. клиент соединяется с сервером через двунаправленный поток gRPC. Сервер работает на докере kunbeness.

После однократного обновления сервера kubeness клиент всегда получает ошибку EOF при попытке отправить запрос на потоковый сервер. Я обнаружил, что TCP-соединение живо. Почему?

Нужно ли заново создавать новую строку, вызывая API "NewStream" в go-grpc?

func (cc *ClientConn) NewStream(ctx context.Context, desc *StreamDesc, method string, opts ...CallOption) (ClientStream, error)

Если я установлю параметры keep-alive при наборе номера на потоковом сервере gRPC,поток будет переподключен автоматически или только TCP-соединение?

1 Ответ

0 голосов
/ 11 октября 2019

Если я установлю параметры поддержания активности при соединении с потоковым сервером gRPC, будет ли поток повторно подключаться автоматически или только по TCP-соединению?

Только по TCP-соединению.

Перезапуск после io.EOF - не редкость, поэтому вашей клиентской стороне потребуется перезапустить поток.

В цикле повторных попыток может потребоваться добавление задержки ожидания / ожидания между повторными попытками и макс. защититься от убегающей занятой петли.

...