diff --git a/server/websocket.go b/server/websocket.go index ce961439..784e1c20 100644 --- a/server/websocket.go +++ b/server/websocket.go @@ -324,18 +324,21 @@ func (c *websocketConn) handleRequest(bot *coolq.CQBot, payload []byte) { func (s *websocketServer) onBotPushEvent(m coolq.MSG) { s.eventConnMutex.Lock() defer s.eventConnMutex.Unlock() - pos := 0 - for _, conn := range s.eventConn { + for i, l := 0, len(s.eventConn); i 0 { - pos++ + next := i +1 + if next >= l { + next = l -1 } + s.eventConn[i], s.eventConn[next] = s.eventConn[next], s.eventConn[i] + s.eventConn = append(s.eventConn[:next], s.eventConn[next+1:]...) + i-- + l-- + conn = nil } - pos++ } }