ソースを参照

enhance: do not test availability if not socket

0xJacky 1 年間 前
コミット
9a18005eae

+ 42 - 39
api/upstream/upstream.go

@@ -1,46 +1,49 @@
 package upstream
 
 import (
-	"github.com/0xJacky/Nginx-UI/internal/logger"
-	"github.com/0xJacky/Nginx-UI/internal/upstream"
-	"github.com/gin-gonic/gin"
-	"github.com/gorilla/websocket"
-	"net/http"
-	"time"
+    "github.com/0xJacky/Nginx-UI/internal/logger"
+    "github.com/0xJacky/Nginx-UI/internal/upstream"
+    "github.com/gin-gonic/gin"
+    "github.com/gorilla/websocket"
+    "net/http"
+    "time"
 )
 
 func AvailabilityTest(c *gin.Context) {
-	var upGrader = websocket.Upgrader{
-		CheckOrigin: func(r *http.Request) bool {
-			return true
-		},
-	}
-	// upgrade http to websocket
-	ws, err := upGrader.Upgrade(c.Writer, c.Request, nil)
-	if err != nil {
-		logger.Error(err)
-		return
-	}
-
-	defer ws.Close()
-
-	var body []string
-
-	err = ws.ReadJSON(&body)
-
-	if err != nil {
-		logger.Error(err)
-		return
-	}
-
-	for {
-		err = ws.WriteJSON(upstream.AvailabilityTest(body))
-
-		if err != nil {
-			logger.Error(err)
-			return
-		}
-
-		time.Sleep(10 * time.Second)
-	}
+    var upGrader = websocket.Upgrader{
+        CheckOrigin: func(r *http.Request) bool {
+            return true
+        },
+    }
+    // upgrade http to websocket
+    ws, err := upGrader.Upgrade(c.Writer, c.Request, nil)
+    if err != nil {
+        logger.Error(err)
+        return
+    }
+
+    defer ws.Close()
+
+    var body []string
+
+    err = ws.ReadJSON(&body)
+
+    if err != nil {
+        logger.Error(err)
+        return
+    }
+
+    for {
+        err = ws.WriteJSON(upstream.AvailabilityTest(body))
+
+        if err != nil || websocket.IsUnexpectedCloseError(err,
+            websocket.CloseGoingAway,
+            websocket.CloseNoStatusReceived,
+            websocket.CloseNormalClosure) {
+            logger.Error(err)
+            break
+        }
+
+        time.Sleep(10 * time.Second)
+    }
 }

+ 1 - 1
app/src/version.json

@@ -1 +1 @@
-{"version":"2.0.0-beta.8","build_id":98,"total_build":302}
+{"version":"2.0.0-beta.8","build_id":100,"total_build":304}

+ 8 - 6
app/src/views/domain/ngx_conf/NgxUpstream.vue

@@ -74,12 +74,14 @@ function availability_test() {
     }
   }
 
-  websocket.value = upstream.availability_test()
-  websocket.value.onopen = () => {
-    websocket.value.send(JSON.stringify(sockets))
-  }
-  websocket.value.onmessage = (e: MessageEvent) => {
-    availabilityResult.value = JSON.parse(e.data)
+  if (sockets.length > 0) {
+    websocket.value = upstream.availability_test()
+    websocket.value.onopen = () => {
+      websocket.value.send(JSON.stringify(sockets))
+    }
+    websocket.value.onmessage = (e: MessageEvent) => {
+      availabilityResult.value = JSON.parse(e.data)
+    }
   }
 }
 

+ 1 - 1
app/version.json

@@ -1 +1 @@
-{"version":"2.0.0-beta.8","build_id":98,"total_build":302}
+{"version":"2.0.0-beta.8","build_id":100,"total_build":304}