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