rpc-go-example/main.go
2024-07-18 15:44:51 -04:00

37 lines
851 B
Go

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)
}