|
@@ -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)
|
|
|
+ }
|
|
|
}
|