mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2025-05-11 10:25:52 +02:00
enhance: add heartbeat for sse #705
This commit is contained in:
parent
5698418f14
commit
14669875a8
4 changed files with 25 additions and 12 deletions
|
@ -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("message", n)
|
||||
return false
|
||||
})
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -58,7 +58,6 @@ function newSSE() {
|
|||
|
||||
// reconnect
|
||||
s.onerror = reconnect
|
||||
s.onabort = reconnect
|
||||
|
||||
return s
|
||||
}
|
||||
|
|
|
@ -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}
|
|
@ -14,7 +14,8 @@ func TestNgxConfParse(t *testing.T) {
|
|||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
n := p.Parse()
|
||||
|
||||
n, _ := p.Parse()
|
||||
|
||||
fn(n.Block, 0)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue