upstream.go 839 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package upstream
  2. import (
  3. "github.com/0xJacky/Nginx-UI/internal/helper"
  4. "github.com/0xJacky/Nginx-UI/internal/upstream"
  5. "github.com/gin-gonic/gin"
  6. "github.com/gorilla/websocket"
  7. "github.com/uozi-tech/cosy/logger"
  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 err != nil {
  33. if helper.IsUnexpectedWebsocketError(err) {
  34. logger.Error(err)
  35. }
  36. break
  37. }
  38. time.Sleep(10 * time.Second)
  39. }
  40. }