From d961c11eb7f54ea72fb790648dc1035ea584a850 Mon Sep 17 00:00:00 2001 From: yusing Date: Fri, 28 Mar 2025 07:31:10 +0800 Subject: [PATCH] api: health endpoint support plain or ws based on request --- internal/api/v1/health.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/internal/api/v1/health.go b/internal/api/v1/health.go index 0a3c011..3379022 100644 --- a/internal/api/v1/health.go +++ b/internal/api/v1/health.go @@ -6,13 +6,18 @@ import ( "github.com/coder/websocket" "github.com/coder/websocket/wsjson" - U "github.com/yusing/go-proxy/internal/api/v1/utils" - config "github.com/yusing/go-proxy/internal/config/types" + "github.com/yusing/go-proxy/internal/net/gphttp" + "github.com/yusing/go-proxy/internal/net/gphttp/gpwebsocket" + "github.com/yusing/go-proxy/internal/net/gphttp/httpheaders" "github.com/yusing/go-proxy/internal/route/routes/routequery" ) -func HealthWS(cfg config.ConfigInstance, w http.ResponseWriter, r *http.Request) { - U.PeriodicWS(cfg, w, r, 1*time.Second, func(conn *websocket.Conn) error { - return wsjson.Write(r.Context(), conn, routequery.HealthMap()) - }) +func Health(w http.ResponseWriter, r *http.Request) { + if httpheaders.IsWebsocket(r.Header) { + gpwebsocket.Periodic(w, r, 1*time.Second, func(conn *websocket.Conn) error { + return wsjson.Write(r.Context(), conn, routequery.HealthMap()) + }) + } else { + gphttp.RespondJSON(w, r, routequery.HealthMap()) + } }