diff options
Diffstat (limited to 'app/web_hub.go')
-rw-r--r-- | app/web_hub.go | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/app/web_hub.go b/app/web_hub.go index a0663459a..f65683f70 100644 --- a/app/web_hub.go +++ b/app/web_hub.go @@ -8,6 +8,7 @@ import ( "hash/fnv" "runtime" "runtime/debug" + "sync/atomic" l4g "github.com/alecthomas/log4go" @@ -18,6 +19,7 @@ import ( type Hub struct { connections []*WebConn + count int64 register chan *WebConn unregister chan *WebConn broadcast chan *model.WebSocketEvent @@ -43,12 +45,12 @@ func NewWebHub() *Hub { func TotalWebsocketConnections() int { // This is racy, but it's only used for reporting information // so it's probably OK - count := 0 + count := int64(0) for _, hub := range hubs { - count = count + len(hub.connections) + count = count + atomic.LoadInt64(&hub.count) } - return count + return int(count) } func HubStart() { @@ -248,6 +250,7 @@ func (h *Hub) Start() { select { case webCon := <-h.register: h.connections = append(h.connections, webCon) + atomic.StoreInt64(&h.count, int64(len(h.connections))) case webCon := <-h.unregister: userId := webCon.UserId |