[🚀] Ticker #13
@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user