mirror of
https://github.com/m1k1o/neko.git
synced 2025-08-02 16:29:55 +02:00
implement session stats, fixes last (admin|user) left at won't work for any provider that removed users after logout.
This commit is contained in:
parent
356a566bc6
commit
4f401ac2b6
7 changed files with 124 additions and 21 deletions
|
@ -121,6 +121,14 @@ func (session *SessionCtx) ConnectWebSocketPeer(websocketPeer types.WebSocketPee
|
|||
session.state.ConnectedSince = &now
|
||||
session.state.NotConnectedSince = nil
|
||||
|
||||
if session.profile.IsAdmin {
|
||||
session.manager.totalAdmins.Add(1)
|
||||
session.manager.lastAdminLeftAt.Store((*time.Time)(nil))
|
||||
} else {
|
||||
session.manager.totalUsers.Add(1)
|
||||
session.manager.lastUserLeftAt.Store((*time.Time)(nil))
|
||||
}
|
||||
|
||||
session.manager.emmiter.Emit("connected", session)
|
||||
|
||||
// if there is a previous peer, destroy it
|
||||
|
@ -180,6 +188,16 @@ func (session *SessionCtx) DisconnectWebSocketPeer(websocketPeer types.WebSocket
|
|||
session.state.ConnectedSince = nil
|
||||
session.state.NotConnectedSince = &now
|
||||
|
||||
if session.profile.IsAdmin {
|
||||
if session.manager.totalAdmins.Add(-1) == 0 {
|
||||
session.manager.lastAdminLeftAt.Store(&now)
|
||||
}
|
||||
} else {
|
||||
if session.manager.totalUsers.Add(-1) == 0 {
|
||||
session.manager.lastUserLeftAt.Store(&now)
|
||||
}
|
||||
}
|
||||
|
||||
session.manager.emmiter.Emit("disconnected", session)
|
||||
|
||||
session.websocketMu.Lock()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue