Ich bin ein Neuling von gRPC, und hier ist mein Problem. Ich versuche, einen Dienst zu schreiben myOwnService
in einen gRPC Dienst gemäß der folgenden Service-Methode zu entlarven:Wie kann ich einen Go gRPC auf der Serverseite mit Standard IO arbeiten lassen?
rpc HighFive (stream HighRequest) returns (stream HighReply) {}
Der serverseitigen Code ist wie folgt:
func (s *server) HighFive(stream pb.Greeter_HighFiveServer) error {
// Oops, don't know how to do here ...
myOwnService(stdin io.ReadCloser, stdout io.WriteCloser)
return nil
}
func myOwnService(stdin io.ReadCloser, stdout io.WriteCloser) error {
// read input from stdin, do something, the write result to stdout
...
return nil
}
Wie Sie oben sehen können, Ich habe keine Ahnung, wie man stream
mit io.Reader
und io.Writer
in meinem ursprünglichen Dienst arbeiten, so dass der Anrufer des HighFive
gRPC-Dienstes Daten lesen und schreiben kann, wie normalerweise myOwnService
aufruft.
[Update] Meine aktuellen Meldungen wie diese sind, aber Sie können sie bei Bedarf ändern:
message HighRequest {
bytes content = 1;
}
message HighReply {
bytes content = 1;
}
grpc Ströme sind Ströme von Protocol Buffer-Nachrichten, nicht roh Bytes (wie das, was 'myOwnService' erwartet). Damit dies funktioniert, müssen Sie definieren, wie HighRequest in ein Byte-Segment konvertiert wird und wie ein Byte-Segment in HighReply konvertiert wird. –