package main import ( "context" "fmt" "log" "net/http" "os" pb "git.sshear.dev/sammyshear/rpc-go-example/rpc/helloworld" ) type HelloWorldServer struct{} // Hello implements helloworld.HelloWorld. func (h *HelloWorldServer) Hello(_ context.Context, req *pb.HelloReq) (*pb.HelloResp, error) { return &pb.HelloResp{Text: fmt.Sprintf("Hello %s!", req.Subject)}, nil } func main() { twirpHandler := pb.NewHelloWorldServer(&HelloWorldServer{}) mux := http.NewServeMux() mux.Handle(twirpHandler.PathPrefix(), twirpHandler) go http.ListenAndServe(":8080", mux) client := pb.NewHelloWorldProtobufClient("http://localhost:8080", &http.Client{}) res, err := client.Hello(context.Background(), &pb.HelloReq{ Subject: "Sammy", }) if err != nil { log.Panicf("Error making request: %s", err) } fmt.Printf("%s\n", res.Text) os.Exit(0) }