【问题标题】:gRPC example, Received RST_STREAM with code 0gRPC 示例,收到代码为 0 的 RST_STREAM
【发布时间】:2022-09-28 00:04:53
【问题描述】:

我只是在尝试grpc。我用nodejs做了一个简单的客户端和服务器 原型文件:

syntax = \"proto3\";


message Empty {}

message EchoRequest {
  string message = 1;
}

message EchoResponse {
  string message = 1;
  int32 message_count = 2;
}

// A simple echo service.
service EchoService {
  // One request followed by one response
  // The server returns the client message as-is.
  rpc echo(EchoRequest) returns (EchoResponse);
}

客户端.js

const grpc = require(\"@grpc/grpc-js\");
var protoLoader = require(\"@grpc/proto-loader\");
const PROTO_PATH = \"./echo.proto\";

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

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

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


const client = new EchoService(
  \"165.22.201.129:9090\",
  grpc.credentials.createInsecure()
);

client.echo({message: \"test\"}, (error, response) => {
   console.log(\"Error:\", error)
    console.log(\"Response message\", response.message);
  });

服务器.js

const grpc = require(\"@grpc/grpc-js\");
const PROTO_PATH = \"./echo.proto\";
var protoLoader = require(\"@grpc/proto-loader\");

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

var messageCount = 0;

var packageDefinition = protoLoader.loadSync(PROTO_PATH, options);
const echoProto = grpc.loadPackageDefinition(packageDefinition);
const server = new grpc.Server();

server.addService(echoProto.EchoService.service, {
    echo: (call, callback) => {
    console.log(\"request message:\", call.request.message, \"index\", messageCount)
    callback(null, {message: \"response test\"});//call.request.message);
  },
});


const ip = \"0.0.0.0:9090\";
server.bindAsync(
  ip,
  grpc.ServerCredentials.createInsecure(),
  (error, port) => {
    console.log(\"error is:\", error)
    console.log(\"Server running at\", ip);
    server.start();
  }
);

我正常运行客户端和服务器,没有使用像 docker 容器这样的东西。 在本地运行时,一切正常。但是,当我在 ip: 165.22.201.129 的数字海洋水滴中运行服务器时。它不起作用。 服务器确实收到了没有问题的请求,但是在使用回调时,我在客户端上收到以下错误:

Error: Error: 13 INTERNAL: Received RST_STREAM with code 0
    at Object.callErrorFromStatus (D:\\Github\\EpicFlowServer\\node_modules\\@grpc\\grpc-js\\build\\src\\call.js:31:26)    at Object.onReceiveStatus (D:\\Github\\EpicFlowServer\\node_modules\\@grpc\\grpc-js\\build\\src\\client.js:189:52) 
    at Object.onReceiveStatus (D:\\Github\\EpicFlowServer\\node_modules\\@grpc\\grpc-js\\build\\src\\client-interceptors.js:365:141)
    at Object.onReceiveStatus (D:\\Github\\EpicFlowServer\\node_modules\\@grpc\\grpc-js\\build\\src\\client-interceptors.js:328:181)
    at D:\\Github\\EpicFlowServer\\node_modules\\@grpc\\grpc-js\\build\\src\\call-stream.js:187:78
    at processTicksAndRejections (internal/process/task_queues.js:79:11) {
  code: 13,
  details: \'Received RST_STREAM with code 0\',
  metadata: Metadata { internalRepr: Map {}, options: {} }
}

我尝试在网上查找,但找不到任何帮助。 有谁知道可能出了什么问题?

  • 您是否能够在没有 grpc 的情况下获得类似于此工作的设置(意味着只是普通的客户端和服务器)。这将有助于排除任何与 grpc 相关的问题。看起来客户收到了RST_STREAM。服务器端的日志是否表明任何有用的信息?

标签: grpc grpc-node


【解决方案1】:

到目前为止,您是否对此问题进行了任何修复? 我现在有同样的问题。

【讨论】:

  • 请不要添加我也是作为答案。它实际上并没有提供问题的答案。如果你有一个不同但相关的问题,那么ask它(如果它有助于提供上下文,请参考这个问题)。如果您对这个特定问题感兴趣,您可以upvote 它,留下comment,或者在您有足够的reputation 时启动bounty
猜你喜欢
  • 2018-06-18
  • 2021-12-04
  • 2021-10-30
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
  • 2018-11-23
相关资源
最近更新 更多