diff --git a/wshandler/wshandler.go b/wshandler/wshandler.go index 0eab4ff..4c8e523 100644 --- a/wshandler/wshandler.go +++ b/wshandler/wshandler.go @@ -97,7 +97,23 @@ type Sender struct { Region string Accid primitive.ObjectID Alias string - DisconnectedCallbacks map[string]func() + disconnectedCallbacks map[string]func() +} + +func (s *Sender) RegistDisconnectedCallback(name string, f func()) (old func()) { + if s.disconnectedCallbacks == nil { + s.disconnectedCallbacks = make(map[string]func()) + } + + old = s.disconnectedCallbacks[name] + s.disconnectedCallbacks[name] = f + return +} + +func (s *Sender) PopDisconnectedCallback(name string) func() { + old := s.disconnectedCallbacks[name] + delete(s.disconnectedCallbacks, name) + return old } type EventReceiver interface {