Keine Fehler, keine Antwort an meinen Kunden. Mein message.proto:Keine Antwort von NodeJs gRPC Server
syntax = "proto3";
message TstCoordinates {
required int32 id = 1;
required string firstname = 2;
required string lastname = 3;
required string email = 4;
required string areacode = 5;
required string phone = 6;
required string extension = 7;
}
message TstId {
required int32 id = 1;
}
message Empty {}
service TstService{
rpc SendCoordinates (TstId) returns (TstCoordinates);
rpc List (Empty) returns (TstCoordinates);
}
Mein gRPC Server:
'use strict';
const fs = require('fs');
const grpc = require('grpc');
const serviceDef = grpc.load("message.proto");
const PORT = 7777;
const cacert = fs.readFileSync('certs/ca.crt'),
cert = fs.readFileSync('certs/server.crt'),
key = fs.readFileSync('certs/server.key'),
kvpair = {
'private_key': key,
'cert_chain': cert
};
const creds = grpc.ServerCredentials.createSsl(cacert, [kvpair]);
var tstcoordinates = [
{
id: 1,
firstname: "Bill",
lastname: "Williams",
email: "[email protected]",
areacode: "444",
phone: "555-1212",
extension: "378"
},
{
id: 2,
firstname: "Happy",
lastname: "Golucky",
email: "[email protected]",
areacode: "444",
phone: "555-1212",
extension: "382"
}
];
var server = new grpc.Server();
server.addService(serviceDef.TstService.service, {
list: function(call, callback) {
console.log("in list");
callback(null, tstcoordinates[0]);
},
sendCoordinates: function(call, callback) {
console.log("in sendCoordinates");
callback(null, tstcoordinates[1]);
return;
}
});
server.bind(`0.0.0.0:${PORT}`, creds);
console.log(`Starting gRPC server on port ${PORT}`);
server.start();
Mein Kunde:
'use strict';
const fs = require('fs');
const process = require('process');
const grpc = require('grpc');
const serviceDef = grpc.load("message.proto");
const PORT = 7777;
const cacert = fs.readFileSync('certs/ca.crt'),
cert = fs.readFileSync('certs/client.crt'),
key = fs.readFileSync('certs/client.key'),
kvpair = {
'private_key': key,
'cert_chain': cert
};
const creds = grpc.credentials.createSsl(cacert, key, cert);
const client = new serviceDef.TstService(`hyperledger-devenv:${PORT}`,creds);
console.log("secure connection established with gRPC server");
lst();
snd();
function printResponse(error, response) {
console.log("in printResponse");
if (error)
console.log('Error: ', error);
else
console.log(response);
}
function lst() {
console.log("in list");
client.list({}, function(error, response) {
console.log("in list call");
printResponse(error, response);
});
}
function snd() {
console.log("in snd");
client.sendCoordinates({'id': 1}, function(error, response) {
console.log("in snd call");
printResponse(error, response);
});
}
Wenn ich eine "curl localhost: 7777" do-Befehl, zeigt der Server eine SSL Handshake-Fehler, also weiß ich, dass es zuhört. Der Client zeigt an:
secure connection established with gRPC server
in list
in snd
Und das ist alles. Keine Fehler auf beiden Seiten. Ich habe es ohne SSL versucht und bekomme genau das gleiche Ergebnis.
Meine Versionen: Knoten --Version v6.9.5
Protoc --Version libprotoc 2.6.1
npm --Version 3.10.10
Jede Hilfe sehr geschätzt.
TIA
Ich bemerke, dass Sie sagen, dass 'curl localhost: 7777' den SSL-Handshake wie erwartet durchführt, aber Sie bauen Ihren Client so auf, dass er sich mit' hyperledger-devenv: 7777' verbindet. Bist du sicher, dass "localhost" aufgelöst wird? Außerdem sollte ich darauf hinweisen, dass nach Abschluss des Client-Konstruktors keine Verbindung hergestellt wurde. Die Verbindung wird zum ersten Mal versucht, wenn eine Anfrage gestellt wird. – murgatroid99