Files
home-sensors/cmd/signaler/main.go
T

69 lines
2.0 KiB
Go
Raw Normal View History

2023-09-17 16:29:46 -07:00
package main
2023-09-20 22:09:15 -07:00
import (
"fmt"
"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"
2023-09-28 20:35:50 -07:00
"github.com/rs/cors"
"golang.org/x/net/http2"
"golang.org/x/net/http2/h2c"
2023-09-20 22:09:15 -07:00
)
2023-09-17 16:29:46 -07:00
func main() {
2023-09-20 22:09:15 -07:00
mux := http.NewServeMux()
reflector := grpcreflect.NewStaticReflector(
servicepb.SignalerServiceName,
)
path, _ := grpcreflect.NewHandlerV1(reflector)
fmt.Printf("Got path %s\n", path)
mux.Handle(grpcreflect.NewHandlerV1(reflector))
path, _ = grpcreflect.NewHandlerV1Alpha(reflector)
fmt.Printf("Got path %s\n", path)
mux.Handle(grpcreflect.NewHandlerV1Alpha(reflector))
path, _ = servicepb.NewSignalerServiceHandler(signaler.New())
fmt.Printf("Got path %s\n", path)
mux.Handle(servicepb.NewSignalerServiceHandler(signaler.New()))
2023-09-28 20:35:50 -07:00
corsHandler := cors.New(cors.Options{
AllowedMethods: []string{
http.MethodGet,
http.MethodPost,
},
AllowedOrigins: []string{"example.com"},
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
},
})
handler := corsHandler.Handler(mux)
server := &http.Server{
Addr: "0.0.0.0:8080",
Handler: h2c.NewHandler(handler, &http2.Server{}),
}
if err := server.ListenAndServe(); err != nil {
2023-09-20 22:09:15 -07:00
log.Fatalf("Failed to listen for HTTP traffic: %v", err)
}
2023-09-17 16:29:46 -07:00
}