From fe7a1f502818399678ea21eb27de1c84e8706c7e Mon Sep 17 00:00:00 2001 From: F0ur Date: Wed, 26 Aug 2020 14:30:41 +0800 Subject: [PATCH] fix(ws): fix concurrent write to ws conn --- server/websocket.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server/websocket.go b/server/websocket.go index 8dab69a..7f0cae6 100644 --- a/server/websocket.go +++ b/server/websocket.go @@ -319,6 +319,7 @@ func (s *websocketServer) onBotPushEvent(m coolq.MSG) { for i, l := 0, len(s.eventConn); i < l; i++ { conn := s.eventConn[i] log.Debugf("向WS客户端 %v 推送Event: %v", conn.RemoteAddr().String(), m.ToJson()) + conn.Lock() if err := conn.WriteMessage(websocket.TextMessage, []byte(m.ToJson())); err != nil { _ = conn.Close() next := i + 1 @@ -330,7 +331,9 @@ func (s *websocketServer) onBotPushEvent(m coolq.MSG) { i-- l-- conn = nil + continue } + conn.Unlock() } }