Remove stale client purging. Use sockets to count clients. #323
This commit is contained in:
@@ -57,8 +57,8 @@ func NewClient(ws *websocket.Conn) *Client {
|
||||
|
||||
ipAddress := utils.GetIPAddressFromRequest(ws.Request())
|
||||
userAgent := ws.Request().UserAgent()
|
||||
clientID := utils.GenerateClientIDFromRequest(ws.Request())
|
||||
socketID, _ := shortid.Generate()
|
||||
clientID := socketID
|
||||
|
||||
return &Client{time.Now(), 0, userAgent, ipAddress, nil, clientID, nil, socketID, ws, ch, pingch, usernameChangeChannel, doneCh}
|
||||
}
|
||||
|
||||
@@ -108,7 +108,7 @@ func (s *server) Listen() {
|
||||
// remove a client
|
||||
case c := <-s.delCh:
|
||||
delete(s.Clients, c.socketID)
|
||||
s.listener.ClientRemoved(c.ClientID)
|
||||
s.listener.ClientRemoved(c.socketID)
|
||||
|
||||
// message was recieved from a client and should be sanitized, validated
|
||||
// and distributed to other clients.
|
||||
|
||||
@@ -43,32 +43,9 @@ func setupStats() error {
|
||||
}
|
||||
}()
|
||||
|
||||
staleViewerPurgeTimer := time.NewTicker(3 * time.Second)
|
||||
go func() {
|
||||
for {
|
||||
select {
|
||||
case <-staleViewerPurgeTimer.C:
|
||||
purgeStaleViewers()
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func purgeStaleViewers() {
|
||||
for clientID, client := range _stats.Clients {
|
||||
if client.LastSeen.IsZero() {
|
||||
continue
|
||||
}
|
||||
|
||||
timeSinceLastActive := time.Since(client.LastSeen).Minutes()
|
||||
if timeSinceLastActive > 1 {
|
||||
RemoveClient(clientID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//IsStreamConnected checks if the stream is connected or not
|
||||
func IsStreamConnected() bool {
|
||||
if !_stats.StreamConnected {
|
||||
|
||||
Reference in New Issue
Block a user