diff --git a/common/socket/ServerEvent.go b/common/socket/ServerEvent.go index 6413b04e..f68e8bec 100644 --- a/common/socket/ServerEvent.go +++ b/common/socket/ServerEvent.go @@ -155,14 +155,17 @@ func (s *Server) handleTcp(conn gnet.Conn) (action gnet.Action) { conn.Context().(*player.ClientData).IsCrossDomain = true data, err := s.codec.Decode(conn) if err != nil { - if err != codec.ErrIncompletePacket { - action = gnet.Close - return - } else { + + if err == codec.ErrIncompletePacket&&conn.InboundBuffered()>0 { + t, _ := conn.Peek(conn.InboundBuffered()) + cool.Loger.Debug(context.Background(), "断包", err.Error(), conn.InboundBuffered(), t) if err := conn.Wake(nil); err != nil { // wake up the connection manually to avoid missing the leftover data logging.Errorf("failed to wake up the connection, %v", err) return gnet.Close } + } else { + action = gnet.Close + return } }