savinmax f69355d69d
All checks were successful
CI / test (push) Successful in 10s
CI / lint (push) Successful in 11s
small fix
2025-08-04 11:11:10 +02:00

49 lines
1.1 KiB
Go

package main
import (
"flag"
"fmt"
"log"
"net/http"
"websocket-relay/internal/config"
"websocket-relay/internal/hub"
"github.com/prometheus/client_golang/prometheus/promhttp"
)
func main() {
configFile := flag.String("config-file", "config.yaml", "Path to configuration file")
flag.Parse()
cfg, err := config.Load(*configFile)
if err != nil {
log.Fatal("Failed to load config:", err)
}
h := hub.New()
go h.Run()
// Start metrics server if enabled
if cfg.Metrics.Enabled {
go func() {
metricsAddr := fmt.Sprintf(":%d", cfg.Metrics.Port)
log.Printf("Metrics server starting on %s", metricsAddr)
http.Handle("/metrics", promhttp.Handler())
log.Fatal(http.ListenAndServe(metricsAddr, nil))
}()
}
mux := http.NewServeMux()
mux.HandleFunc("/", h.HandleWebSocket)
addr := fmt.Sprintf(":%d", cfg.Server.Port)
if cfg.Server.TLS.Enabled {
log.Printf("WebSocket relay server starting on %s (TLS)", addr)
log.Fatal(http.ListenAndServeTLS(addr, cfg.Server.TLS.CertFile, cfg.Server.TLS.KeyFile, mux))
} else {
log.Printf("WebSocket relay server starting on %s (HTTP)", addr)
log.Fatal(http.ListenAndServe(addr, mux))
}
}