]> 127.0.0.1 Git - part/.git/commitdiff
Fix
authorqydysky <32743305+qydysky@users.noreply.github.com>
Sat, 11 Mar 2023 15:46:19 +0000 (23:46 +0800)
committerqydysky <32743305+qydysky@users.noreply.github.com>
Sat, 11 Mar 2023 15:46:19 +0000 (23:46 +0800)
websocket/Client.go

index 643bdaf61dbdd70053d5541089b67ae6ca9e555f..f2ff8b3744b72b41ba353902d11f9b390a726e93 100644 (file)
@@ -167,9 +167,14 @@ func (i *Client) Handle() (o *Client) {
                        }
                }()
 
+               donec, donecF := done.WaitC()
+               defer donecF()
+               osignal, osignalF := o.signal.WaitC()
+               defer osignalF()
+
                for {
                        select {
-                       case <-done.WaitC():
+                       case <-donec:
                                return
                        case t := <-o.SendChan:
                                if !done.Islive() {
@@ -188,7 +193,7 @@ func (i *Client) Handle() (o *Client) {
                                        return
                                }
                                c.SetWriteDeadline(time.Now().Add(time.Millisecond * time.Duration(o.TO)))
-                       case <-o.signal.WaitC():
+                       case <-osignal:
                                if !done.Islive() {
                                        return
                                }
@@ -198,7 +203,7 @@ func (i *Client) Handle() (o *Client) {
                                        o.err = err
                                }
                                select {
-                               case <-done.WaitC():
+                               case <-donec:
                                case <-time.After(time.Second):
                                }
                                return
@@ -227,11 +232,14 @@ func (o *Client) Heartbeat() (err error) {
 
        go func(ticker_ping *time.Ticker) {
                defer ticker_ping.Stop()
+
+               osignal, osignalF := o.signal.WaitC()
+               defer osignalF()
                for {
                        select {
                        case <-ticker_ping.C:
                                if !o.Ping.had_pong {
-                                       o.err = errors.New(`Pong fail!`)
+                                       o.err = errors.New("PongFail")
                                        o.Close()
                                        return
                                }
@@ -240,7 +248,7 @@ func (o *Client) Heartbeat() (err error) {
                                        Msg:  o.Ping.Msg,
                                }
                                o.Ping.had_pong = false
-                       case <-o.signal.Chan:
+                       case <-osignal:
                                return
                        }
                }