enhance: do not test availability if not socket

This commit is contained in:
0xJacky 2023-12-15 23:21:58 +08:00
parent 591486a689
commit 9a18005eae
No known key found for this signature in database
GPG key ID: B6E4A6E4A561BAF0
4 changed files with 45 additions and 40 deletions

View file

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

View file

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

View file

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

View file

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