Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

171
Views
Obtener una respuesta vacía de la llamada gRPC

Tengo un servidor y un cliente gRPC simples. El servidor y el cliente funcionan bien (supongo que ya que estoy recibiendo una respuesta y ningún error). Sin embargo, la respuesta está vacía y no tengo idea de por qué.

Aquí está el message.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; }

y 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"); })

y 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); })

y la respuesta que estoy recibiendo

 { msgs: [] }

Si ayuda, estaba siguiendo esta publicación de blog https://daily.dev/blog/build-a-grpc-service-in-nodejs

Gracias por adelantado.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Su definición de mensaje MsgList es un mensaje con un solo campo llamado msgs que tiene el tipo repeated Msg . El objeto que envíe debe tener esa forma. Por lo tanto, debe ser un objeto con un solo campo llamado msgs que tenga una matriz de objetos que coincidan con el formato de la definición del mensaje Msg . Su variable savedMessages no es eso, es solo una matriz, por lo que enviarla no obtiene el resultado que desea.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!