28 lines
721 B
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()
|
|
}
|