go-grpc-net-conn
go-grpc-net-conn is a Go library that creates a net.Conn
implementation
on top of gRPC streams. If the stream is bidirectional (both the request and
response of an RPC is a stream) then the net.Conn
is a
full-duplex connection.
Installation
Standard go get
:
$ go get github.com/mitchellh/go-grpc-net-conn
Usage & Example
For usage and examples see the Godoc.
A brief example is shown below. Note that the only minor complexity is
populating the required fields for the Conn
structure. This package needs
to know how to encode and decode the byte slices onto your expected protobuf
message types.
Imagine a protobuf service that looks like the following:
syntax = "proto3";
package example;
service ExampleService {
rpc Stream(stream Bytes) returns (stream Bytes);
}
message Bytes {
bytes data = 1;
}
You can use this in the following way:
resp, err := client.Stream(context.Background())
fieldFunc := func(msg proto.Message) *[]byte {
return &msg.(*example.Bytes).Data
}
conn := &grpc_net_conn.Conn{
Stream: resp,
Request: &example.Bytes{},
Response: &example.Bytes{},
Encode: SimpleEncoder(fieldFunc),
Decode: SimpleDecoder(fieldFunc),
}