package main import ( "log" "net/http" "os" "os/signal" "syscall" "github.com/noahlann/nnet/pkg/nnet" ) func main() { // HTTP mux 用于暴露 metrics 与健康检查 metricsMux := http.NewServeMux() server, err := nnet.NewPreset(). WithAddress("tcp://:6995"). WithMetricsHandler(metricsMux, "/metrics"). WithHealthHandler(metricsMux, "/healthz"). WithRouteString("/hello", func(ctx nnet.Context) error { return ctx.Response().WriteString("hello from preset\n") }). WithRouteString("/ping", func(ctx nnet.Context) error { return ctx.Response().WriteString("pong\n") }). Build() if err != nil { log.Fatal("preset build failed:", err) } // 启动监控 HTTP 服务 go func() { log.Println("metrics & health available on :9090 (/metrics, /healthz)") if err := http.ListenAndServe(":9090", metricsMux); err != nil { log.Fatal("metrics server failed:", err) } }() // 监听退出信号 done := make(chan os.Signal, 1) signal.Notify(done, syscall.SIGINT, syscall.SIGTERM) go func() { log.Println("nnet preset server listening on :6995") if err := server.Start(); err != nil { log.Fatal("server start failed:", err) } }() <-done log.Println("shutting down...") if err := server.Stop(); err != nil { log.Fatal("server stop failed:", err) } }