func (self *LogSocketController) Remove(sessID string, conn *ws.Conn) { defer func() { recover() }() if self.connPool[sessID] == nil { return } lv := self.lvPool[sessID] lv.closed = true close(lv.logChan) conn.Close() delete(self.connPool, sessID) delete(self.lvPool, sessID) }
func (self *SocketController) Remove(sessID string, conn *ws.Conn) { self.connRWMutex.Lock() self.wchanRWMutex.Lock() defer self.connRWMutex.Unlock() defer self.wchanRWMutex.Unlock() if self.connPool[sessID] == nil { return } wc := self.wchanPool[sessID] close(wc.wchan) conn.Close() delete(self.connPool, sessID) delete(self.wchanPool, sessID) }