diff --git a/event/events.go b/event/events.go index 00e3eae..20ab78c 100644 --- a/event/events.go +++ b/event/events.go @@ -131,6 +131,8 @@ func (ueqs queues) Close(sid string) { return } + close(q.Queue) + delete(ueqs, sid) } diff --git a/session/sessions.go b/session/sessions.go index a05aedd..a28572c 100644 --- a/session/sessions.go +++ b/session/sessions.go @@ -365,15 +365,19 @@ func (sessions *wSessions) New(httpSession *sessions.Session, sid string) *WideS defer util.Recover() for { + ch := SessionWS[sid] + if nil == ch { + return // release this gorutine + } + select { case event := <-watcher.Events: path := event.Name dir := filepath.Dir(path) - ch := SessionWS[sid] - + ch = SessionWS[sid] if nil == ch { - break + return // release this gorutine } if event.Op&fsnotify.Create == fsnotify.Create {