ошибка rpc: code = не реализовано desc = метод RPC не реализован - PullRequest
1 голос
/ 08 мая 2019

Я пытался создать клиент grpc в Go и следовал правильным инструкциям, указанным на официальном сайте grpc .Когда я запускаю свой сервер grpc, написанный в файле node.js, соединение работает хорошо, но после компиляции буфера протокола в Go и создания клиентского интерфейса с правильными конфигурациями клиента grpc я сталкиваюсь с ошибкой.

Вотмое то, что у меня есть в моем identity.pb.go.

type IdentityServiceClient interface {
    CreateUser(ctx context.Context, in *GoogleIdToken, opts ...grpc.CallOption) (error, *UserInfo)
}

type simpleServerClient struct {
    connection *grpc.ClientConn
}

func NewSimpleServerClient(connection *grpc.ClientConn) IdentityServiceClient {
    return &simpleServerClient{connection}
}

func (simpleClient *simpleServerClient) CreateUser(ctx context.Context, in *GoogleIdToken, opts ...grpc.CallOption) (error, *UserInfo) {
    out := new(UserInfo)
    err := simpleClient.connection.Invoke(ctx, "/protobuf.IdentityService/CreateUser", in, out, opts...)

    if err != nil {
        return err, nil
    }

    return nil, out
}

вот это identity.proto

syntax="proto3";

package protobuf;

service IdentityService {
    rpc CreateUser (GoogleIdToken) returns (UserInfo) {}
}

message GoogleIdToken {
    string token = 1;
}

message UserInfo {
    string name = 1;
    string email = 2;
    message Profile {
        string imageUrl = 1;
        string lastUpdated = 2;
    };
    Profile profile = 3;
    string token = 4;
}

вот мое main.go

import pb "github.com/Duncanian/iam-gateway/server/protobuf"

func grpcConnection() {
    conn, err := grpc.Dial("localhost:50051", grpc.WithInsecure())
    if err != nil {
        log.Fatalf("Failed to start gRPC connection: %v", err)
    }

    defer conn.Close()

    client := pb.NewSimpleServerClient(conn)

    err, _ = client.CreateUser(context.Background(), &pb.GoogleIdToken{Token: "tevgvybububvvg"})
    if err != nil {
        log.Fatalf("Failed to create user: %v", err)
    }
    log.Println("Created user!")
}

Iожидайте, что результат передачи правильного токена Google Auth даст мне правильные данные пользователя, которые

name: user,
email: user.email@user.com,
profile: {
   imageUrl: myimageUrl,
   lastUpdated: mylastUpdatedTime,
},
token,

, но получили

rpc error: code = Unimplemented desc = RPC method not implemented /protobuf.IdentityService/CreateUser

Вот мои репозитории github: Go grpcклиент & узел JS grpc сервер

1 Ответ

0 голосов
/ 08 мая 2019

Ошибка указывает, что метод /protobuf.IdentityService/CreateUser не зарегистрирован на стороне сервера.И я не увидел никакого кода регистрации службы в коде вашего связанного сервера.Пожалуйста, посмотрите руководство по node.js здесь .

...