upstream.go 814 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package upstream
  2. import (
  3. "github.com/0xJacky/Nginx-UI/internal/helper"
  4. "github.com/uozi-tech/cosy/logger"
  5. "github.com/0xJacky/Nginx-UI/internal/upstream"
  6. "github.com/gin-gonic/gin"
  7. "github.com/gorilla/websocket"
  8. "net/http"
  9. "time"
  10. )
  11. func AvailabilityTest(c *gin.Context) {
  12. var upGrader = websocket.Upgrader{
  13. CheckOrigin: func(r *http.Request) bool {
  14. return true
  15. },
  16. }
  17. // upgrade http to websocket
  18. ws, err := upGrader.Upgrade(c.Writer, c.Request, nil)
  19. if err != nil {
  20. logger.Error(err)
  21. return
  22. }
  23. defer ws.Close()
  24. var body []string
  25. err = ws.ReadJSON(&body)
  26. if err != nil {
  27. logger.Error(err)
  28. return
  29. }
  30. for {
  31. err = ws.WriteJSON(upstream.AvailabilityTest(body))
  32. if helper.IsUnexpectedWebsocketError(err) {
  33. logger.Error(err)
  34. break
  35. }
  36. time.Sleep(10 * time.Second)
  37. }
  38. }