Skip to content

Instantly share code, notes, and snippets.

@pablogrs
Created April 29, 2019 12:05
Show Gist options
  • Save pablogrs/7d91c60ba2656f2a078ffbf6e05c537d to your computer and use it in GitHub Desktop.
Save pablogrs/7d91c60ba2656f2a078ffbf6e05c537d to your computer and use it in GitHub Desktop.
gRPC over Unix Socket Domain
// SERVER SIDE
SockAddr := "/tmp/sample.sock"
func main() {
if err := os.RemoveAll(SockAddr); err != nil {
log.Fatal(err)
}
listener, err := net.Listen("unix", SockAddr)
if err != nil {
log.Fatal("listen error:", err)
}
grpcServer := grpc.NewServer()
someProtopb.RegisterSomeServiceServer(grpcServer, &server{})
if grpcServer.Serve(listener); err != nil {
log.Fatalf("Failed to start server: %v \n", err)
}
}
// CLIENT SIDE
func main() {
addr := "/tmp/sample.sock"
conn, err := grpc.Dial(addr, grpc.WithInsecure(),
grpc.WithDialer(func(addr string, timeout time.Duration) (net.Conn, error) {
return net.DialTimeout("unix", addr, timeout)
}))
if err != nil {
log.Fatalf("Can't connect: %v", err)
}
defer conn.Close()
c := someProtopb.NewSomeServiceClient(conn)
if err != nil {
log.Fatal(err)
}
}
@pablogrs
Copy link
Author

It took me a while to find out how to do it, hopefully it helps

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment