package main import ( "context" "log" "net" "google.golang.org/grpc" ) type Greeter struct{} func (g *Greeter) SayHello(ctx context.Context, in *HelloRequest) (*HelloReply, error) { return &HelloReply{Message: "Hello " + in.Name}, nil } func main() { lis, err := net.Listen("tcp", ":50051") if err != nil { log.Fatalf("failed to listen: %v", err) } s := grpc.NewServer() RegisterGreeterServer(s, &Greeter{}) if err := s.Serve(lis); err != nil { log.Fatalf("failed to serve: %v", err) } }
package main import ( "context" "log" "net" "google.golang.org/grpc" "github.com/grpc-ecosystem/grpc-gateway/runtime" ) func main() { ctx, cancel := context.WithCancel(context.Background()) defer cancel() gwmux := runtime.NewServeMux() opts := []grpc.DialOption{grpc.WithInsecure()} if err := MyService.RegisterMyServiceHandlerFromEndpoint( ctx, gwmux, ":50051", opts, ); err != nil { log.Fatalf("failed to register gateway: %v", err) } mux := http.NewServeMux() mux.Handle("/", gwmux) if err := http.ListenAndServe(":8080", mux); err != nil { log.Fatalf("failed to start HTTP gateway: %v", err) } }In this example, we use a gRPC gateway to expose our gRPC service over HTTP. We create a new `runtime.ServeMux` and register our service using the `RegisterMyServiceHandlerFromEndpoint` function. We then create an HTTP server and route all requests through the gateway. The package library for `google.golang.org/grpc` is `grpc`.