diff --git a/internal/network/client.go b/internal/network/client.go index 0c3ca65..754a76b 100644 --- a/internal/network/client.go +++ b/internal/network/client.go @@ -118,14 +118,22 @@ func (c *WSClient) closeConn() { c.isConnected = false } -func (c *WSClient) connect() any { - c.mu.Lock() - defer c.mu.Unlock() - +func (c *WSClient) connect() error { conn, _, err := websocket.DefaultDialer.Dial(c.config.ServerURL, nil) if err != nil { return err } + + c.mu.Lock() + defer c.mu.Unlock() + + select { + case <-c.stopChan: + conn.Close() + return nil + default: + } + c.conn = conn c.isConnected = true log.Printf("[网络] 成功连接到服务器: %s", c.config.ServerURL)