template/cmd/${REPO_NAME_SNAKE}/main.go

57 lines
1.3 KiB
Go
Raw Permalink Normal View History

2024-05-19 09:14:07 +00:00
package main
2024-05-19 11:44:55 +00:00
import (
"${REPO_NAME_SNAKE}/internal/app"
proto "${REPO_NAME_SNAKE}/proto"
"context"
"github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
"log"
"net"
"net/http"
)
2024-05-19 09:14:07 +00:00
func main() {
2024-05-19 11:44:55 +00:00
// Create a listener on TCP port
lis, err := net.Listen("tcp", ":8080")
if err != nil {
log.Fatalln("Failed to listen:", err)
}
// Create a gRPC server object
s := grpc.NewServer()
// Attach the Greeter service to the server
proto.Register${REPO_NAME_PASCAL}Server(s, app.NewServer())
// Serve gRPC server
log.Println("Serving gRPC on 0.0.0.0:8080")
go func() {
log.Fatalln(s.Serve(lis))
}()
// Create a client connection to the gRPC server we just started
// This is where the gRPC-Gateway proxies the requests
conn, err := grpc.NewClient(
"0.0.0.0:8080",
grpc.WithTransportCredentials(insecure.NewCredentials()),
)
if err != nil {
log.Fatalln("Failed to dial server:", err)
}
gwmux := runtime.NewServeMux()
// Register Greeter
err = proto.Register${REPO_NAME_PASCAL}Handler(context.Background(), gwmux, conn)
if err != nil {
log.Fatalln("Failed to register gateway:", err)
}
gwServer := &http.Server{
Addr: ":8090",
Handler: gwmux,
}
log.Println("Serving gRPC-Gateway on http://0.0.0.0:8090")
log.Fatalln(gwServer.ListenAndServe())
2024-05-19 09:14:07 +00:00
}