diff --git a/api/analytic/analytic.go b/api/analytic/analytic.go index ab00e95f..40bd7161 100644 --- a/api/analytic/analytic.go +++ b/api/analytic/analytic.go @@ -8,6 +8,7 @@ import ( "github.com/0xJacky/Nginx-UI/internal/analytic" "github.com/0xJacky/Nginx-UI/internal/helper" + "github.com/0xJacky/Nginx-UI/internal/kernel" "github.com/shirou/gopsutil/v4/cpu" "github.com/shirou/gopsutil/v4/host" "github.com/shirou/gopsutil/v4/load" @@ -91,7 +92,11 @@ func Analytic(c *gin.Context) { break } - time.Sleep(1 * time.Second) + select { + case <-kernel.Context.Done(): + return + case <-time.After(1 * time.Second): + } } } diff --git a/api/analytic/nodes.go b/api/analytic/nodes.go index ceccf878..589f5299 100644 --- a/api/analytic/nodes.go +++ b/api/analytic/nodes.go @@ -6,6 +6,7 @@ import ( "github.com/0xJacky/Nginx-UI/internal/analytic" "github.com/0xJacky/Nginx-UI/internal/helper" + "github.com/0xJacky/Nginx-UI/internal/kernel" "github.com/gin-gonic/gin" "github.com/gorilla/websocket" "github.com/uozi-tech/cosy/logger" @@ -36,7 +37,11 @@ func GetNodeStat(c *gin.Context) { break } - time.Sleep(10 * time.Second) + select { + case <-kernel.Context.Done(): + return + case <-time.After(10 * time.Second): + } } } @@ -65,6 +70,10 @@ func GetNodesAnalytic(c *gin.Context) { break } - time.Sleep(10 * time.Second) + select { + case <-kernel.Context.Done(): + return + case <-time.After(10 * time.Second): + } } } diff --git a/api/system/processing.go b/api/system/processing.go index 30bb16b5..c415dbe9 100644 --- a/api/system/processing.go +++ b/api/system/processing.go @@ -8,6 +8,7 @@ import ( "github.com/0xJacky/Nginx-UI/api" "github.com/0xJacky/Nginx-UI/internal/cache" "github.com/0xJacky/Nginx-UI/internal/cert" + "github.com/0xJacky/Nginx-UI/internal/kernel" "github.com/gin-gonic/gin" ) @@ -58,6 +59,8 @@ func GetProcessingStatus(c *gin.Context) { c.SSEvent("heartbeat", "") return false }) + case <-kernel.Context.Done(): + return case <-notify: // Client disconnected return diff --git a/internal/kernel/boot.go b/internal/kernel/boot.go index 96a994e4..82fe7713 100644 --- a/internal/kernel/boot.go +++ b/internal/kernel/boot.go @@ -30,9 +30,13 @@ import ( cSettings "github.com/uozi-tech/cosy/settings" ) +var Context context.Context + func Boot(ctx context.Context) { defer recovery() + Context = ctx + async := []func(){ InitJsExtensionType, InitNodeSecret,