Files
service-base/server/server.go

28 lines
721 B
Go

package server
import (
"log/slog"
"net/http"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
)
// ListenAndServeH2C starts an HTTP server with HTTP/1.1 and unencrypted HTTP/2 support (h2c),
// wrapped with OpenTelemetry HTTP handler for tracing and metrics.
func ListenAndServeH2C(addr string, handler http.Handler, telemetryName string) error {
instrumentedHandler := otelhttp.NewHandler(handler, telemetryName)
p := new(http.Protocols)
p.SetHTTP1(true)
// Use h2c so we can serve HTTP/2 without TLS.
p.SetUnencryptedHTTP2(true)
s := http.Server{
Addr: addr,
Handler: instrumentedHandler,
Protocols: p,
}
slog.Info("Starting server on " + addr)
return s.ListenAndServe()
}