diff options
Diffstat (limited to 'hotline/presence.go')
| -rw-r--r-- | hotline/presence.go | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/hotline/presence.go b/hotline/presence.go new file mode 100644 index 0000000..7e41357 --- /dev/null +++ b/hotline/presence.go @@ -0,0 +1,20 @@ +package hotline + +// PresenceTracker receives best-effort notifications about user session lifecycle +// events so an external system (e.g. Redis) can maintain a list of online users. +// +// It is optional: when a Server has no PresenceTracker, online presence is derived +// from the in-memory ClientManager instead. Implementations must be safe for +// concurrent use by multiple goroutines. +type PresenceTracker interface { + // UserConnected is called after a successful login, before the nickname is known. + UserConnected(login, ip string) + + // UserRenamed is called when a user's nickname is set or changed. oldNickname is + // empty the first time a nickname is set (e.g. the 1.2.3 login flow or TranAgreed). + UserRenamed(login, oldNickname, newNickname, ip string) + + // UserDisconnected is called when a user's session ends. nickname is empty if the + // user disconnected before setting one. + UserDisconnected(login, nickname, ip string) +} |