enhance: add heartbeat for sse #705

This commit is contained in:
Jacky 2024-11-08 17:06:52 +08:00 committed by Hintay
parent ce68eb1658
commit 31be0b21c4
No known key found for this signature in database
GPG key ID: 120FC7FF121F2F2D
4 changed files with 25 additions and 12 deletions

View file

@ -5,6 +5,7 @@ import (
"github.com/0xJacky/Nginx-UI/model"
"github.com/gin-gonic/gin"
"io"
"time"
)
func Live(c *gin.Context) {
@ -19,15 +20,27 @@ func Live(c *gin.Context) {
notification.SetClient(c, evtChan)
notify := c.Writer.CloseNotify()
go func() {
<-notify
notification.RemoveClient(c)
}()
for n := range evtChan {
c.Stream(func(w io.Writer) bool {
c.SSEvent("heartbeat", "")
return false
})
for {
select {
case n := <-evtChan:
c.Stream(func(w io.Writer) bool {
c.SSEvent("message", n)
return false
})
case <-time.After(30 * time.Second):
c.Stream(func(w io.Writer) bool {
c.SSEvent("heartbeat", "")
return false
})
case <-notify:
notification.RemoveClient(c)
return
}
}
}

View file

@ -58,7 +58,6 @@ function newSSE() {
// reconnect
s.onerror = reconnect
s.onabort = reconnect
return s
}

View file

@ -1 +1 @@
{"version":"2.0.0-beta.39","build_id":1,"total_build":368}
{"version":"2.0.0-beta.39","build_id":3,"total_build":370}

View file

@ -14,7 +14,8 @@ func TestNgxConfParse(t *testing.T) {
fmt.Println(err)
return
}
n := p.Parse()
n, _ := p.Parse()
fn(n.Block, 0)