gRPC WaitForConnected всегда возвращает true - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть сервер grpc и клиентское решение grpc, работающие как 2 отдельных сервиса. Если клиент приходит первым, он пытается подключиться к серверу grpc, а если сервер не работает, он должен подождать. Я думал, что WaitForConnected определено для этой цели. Похоже, он не работает правильно.

Мой код:

    if (!channel->WaitForConnected(gpr_time_add(
              gpr_now(GPR_CLOCK_REALTIME),
              gpr_time_from_seconds(600, GPR_TIMESPAN)))) {
        //Log error and return
      }
     grpc_connectivity_state state = channel->GetState(true);
     // cout << state always return 2 (GRPC_CHANNEL_READY) even if server is not up.  

Версия Grpc: 1.6.x

1 Ответ

0 голосов
/ 14 августа 2019

Вы работаете в докере?Помните, что docker-proxy принимает подключения, даже если порт внутри контейнера не открыл свой порт.

Вы можете проверить это, создав фиктивное отображение порта, например: docker run --rm -it -p 1234:1234 $my-image.Даже если изображение не открывает порт, docker-proxy откроет его и примет подключенные к нему подключения.Yout может использовать параметр --net=host в качестве обходного пути.Не использует прокси.

...