簡體   English   中英

從 gRPC 調用中獲取空響應

[英]Getting empty response from gRPC call

我有一個簡單的 gRPC 服務器和客戶端。 服務器和客戶端工作正常(我假設是因為我收到了響應並且沒有錯誤)。 然而,響應是空的,我不知道為什么。

這是原始message.proto proto

syntax = "proto3";

message Msg {
    int32 timeStamp = 1;
    string text = 2;
    string sender = 3;
}

message Empty {}

service MsgService{
    rpc AllMessages (Empty) returns (MsgList) {}
}

message MsgList {
    repeated Msg msgs = 1;
}

server.js

const grpc = require('@grpc/grpc-js');
const PROTO_PATH = "./message.proto";
const protoLoader = require('@grpc/proto-loader');

const options = {
    keepCase: true,
    longs: String,
    enums: String,
    defaults: true,
    oneofs: true
}

const packageDefinition = protoLoader.loadSync(PROTO_PATH, options);
const msgProto = grpc.loadPackageDefinition(packageDefinition);

const server = new grpc.Server();
let savedMessages = [
    { timeStamp: 1, text: "lorem", sender: "alex" },
    { timeStamp: 2, text: "ipsum", sender: "bob" },
    { timeStamp: 3, text: "dolor", sender: "alex" },
    { timeStamp: 4, text: "net", sender: "bob" }
];

server.addService(msgProto.MsgService.service, {
    AllMessages: (_, callback) => {
        callback(null, savedMessages);
    }
})

server.bindAsync("127.0.0.1:50051", grpc.ServerCredentials.createInsecure(), (err, port) => {
    if (err) {
        console.log(err);
    }
    console.log(port);
    server.start();
    console.log("Server running at 127.0.0.1:50051");
})

client.js

const grpc = require('@grpc/grpc-js');
const protoLoader = require('@grpc/proto-loader');
const PROTO_PATH = "./message.proto";

const options = {
    keepCase: true,
    longs: String,
    enums: String,
    defaults: true,
    oneofs: true,
};

var packageDefinition = protoLoader.loadSync(PROTO_PATH, options);

const MsgService = grpc.loadPackageDefinition(packageDefinition).MsgService;

const client = new MsgService(
    "localhost:50051",
    grpc.credentials.createInsecure()
);

client.AllMessages({}, (err, msg) => {
    // console.log(err);
    if (err) throw err;
    console.log(msg);
    // console.log(msg);
})

和我得到的回應

{ msgs: [] }

如果有幫助,我正在關注這篇博客文章https://daily.dev/blog/build-a-grpc-service-in-nodejs

提前致謝。

您的MsgList消息定義是一條消息,其中包含一個名為msgs字段,該字段的類型為repeated Msg 您發送的對象應該具有該形式。 因此,它應該是一個具有名為msgs的單個字段的對象,該字段具有與Msg消息定義的格式匹配的對象數組。 你的savedMessages變量不是那個,它只是一個數組,這就是為什么發送它不會得到你想要的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM