Files
home-sensors/cmd/signaler/main.go
T
Charles Hathaway d16d1e0ac5 add: in production
2023-10-03 16:17:34 -07:00

63 lines
1.9 KiB
Go

package main
import (
"log"
"net/http"
"connectrpc.com/grpcreflect"
servicepb "github.com/chathaway-codes/home-sensors/v2/gen/genconnect"
"github.com/chathaway-codes/home-sensors/v2/pkg/signaler"
"github.com/prometheus/client_golang/prometheus/promhttp"
"github.com/rs/cors"
)
func main() {
mux := http.NewServeMux()
reflector := grpcreflect.NewStaticReflector(
servicepb.SignalerServiceName,
)
mux.Handle(grpcreflect.NewHandlerV1(reflector))
mux.Handle(grpcreflect.NewHandlerV1Alpha(reflector))
mux.Handle(servicepb.NewSignalerServiceHandler(signaler.New()))
corsHandler := cors.New(cors.Options{
AllowedMethods: []string{
http.MethodGet,
http.MethodPost,
},
AllowedOrigins: []string{"*"},
AllowedHeaders: []string{
"Accept-Encoding",
"Authorization",
"Content-Encoding",
"Content-Type",
"Connect-Protocol-Version",
"Connect-Timeout-Ms",
"Connect-Accept-Encoding", // Unused in web browsers, but added for future-proofing
"Connect-Content-Encoding", // Unused in web browsers, but added for future-proofing
"Grpc-Timeout", // Used for gRPC-web
"X-Grpc-Web", // Used for gRPC-web
"X-User-Agent", // Used for gRPC-web
},
ExposedHeaders: []string{
"Content-Encoding", // Unused in web browsers, but added for future-proofing
"Connect-Content-Encoding", // Unused in web browsers, but added for future-proofing
"Grpc-Status", // Required for gRPC-web
"Grpc-Message", // Required for gRPC-web
},
})
mux.Handle("/metrics", promhttp.Handler())
handler := corsHandler.Handler(mux)
server := &http.Server{
Addr: "0.0.0.0:8080",
Handler: handler,
//Handler: h2c.NewHandler(handler, &http2.Server{}),
}
if err := server.ListenAndServeTLS("server.crt", "server.key"); err != nil {
log.Fatalf("Failed to listen for HTTP traffic: %v", err)
}
}