LINUX.ORG.RU

proxy with gRPC

 ,


0

1

А можно ли как-то в gRPC воспользоваться отдельно сокетам и протобуфером, дополнительно к серверному grpc функционалу. Мне нужно сделать RPC прокси к некоторому серваку, который не RPC, но сообщения передает и принимает в виде protobuf???

Т.е. есть gRPC сервер, и прямо внутри методов я вызваю сокет, который связывается с настоящим сервером.

Ну вот как то так:

class GreeterServiceImpl final : public QObject, public Greeter::Service {
Q_OBJECT
public:
  Status SayHello(ServerContext* context, const HelloRequest* request,  HelloReply* reply);
  SomeGrpcSslSock sock;
};

Status GreeterServiceImpl::SayHello(ServerContext* context, const HelloRequest* request,  HelloReply* reply)
{

    std::string prefix("Hello ");
    reply->set_message(prefix + request->name());

    sock.connectToHost("www", 12345);
    // ...

    return Status::OK;
}

Ответ на: комментарий от fffafasnow

А зачем ты искал в апи grpc сырой сокет? Если из апи торчат кишки, то это херовое апи. Просто открой соединение и обменивайся по нему протобафом по тому протоколу, который тот сервер поддерживает. Тем более, что у grpc транспорт http/2, а у того твоего сервера может быть что угодно. «Можно» в моем ответе означает, что тебе нужно взять любую подходящую библиотеку и в три строки отправить запрос.

cdshines ★★★★ ()