diff --git a/pkg/sse/server.go b/pkg/sse/server.go index dde6a99..d451294 100644 --- a/pkg/sse/server.go +++ b/pkg/sse/server.go @@ -1,12 +1,15 @@ package sse import ( + "fmt" "gitea.bvbej.com/bvbej/base-golang/pkg/mux" + "gitea.bvbej.com/bvbej/base-golang/pkg/ticker" "github.com/gin-gonic/gin" "io" "net/http" "sync" "sync/atomic" + "time" ) var _ Server = (*event)(nil) @@ -31,9 +34,9 @@ type msgChan struct { type event struct { SessionList sync.Map Count atomic.Int32 - - Register chan clientChan - Unregister chan any + Register chan clientChan + Unregister chan any + Ticker ticker.Ticker } func NewServer() Server { @@ -42,8 +45,12 @@ func NewServer() Server { Count: atomic.Int32{}, Register: make(chan clientChan), Unregister: make(chan any), + Ticker: ticker.New(time.Second * 3), } + go e.Ticker.Process(func() { + e.Broadcast("ping", fmt.Sprintf("%d", time.Now().Unix())) + }) go e.listen() return e