add context life cycle control.

pull/2404/head
Monet Lee 1 year ago
parent 557a5a3b46
commit 1b1bc0b756

@ -138,6 +138,7 @@ func (c *Client) readMessage() {
if returnErr != nil { if returnErr != nil {
log.ZWarn(c.ctx, "readMessage", returnErr, "messageType", messageType) log.ZWarn(c.ctx, "readMessage", returnErr, "messageType", messageType)
c.closedErr = returnErr c.closedErr = returnErr
<-c.ctx.Done()
return return
} }
@ -145,6 +146,7 @@ func (c *Client) readMessage() {
if c.closed.Load() { if c.closed.Load() {
// The scenario where the connection has just been closed, but the coroutine has not exited // The scenario where the connection has just been closed, but the coroutine has not exited
c.closedErr = ErrConnClosed c.closedErr = ErrConnClosed
<-c.ctx.Done()
return return
} }
@ -154,10 +156,12 @@ func (c *Client) readMessage() {
parseDataErr := c.handleMessage(message) parseDataErr := c.handleMessage(message)
if parseDataErr != nil { if parseDataErr != nil {
c.closedErr = parseDataErr c.closedErr = parseDataErr
<-c.ctx.Done()
return return
} }
case MessageText: case MessageText:
c.closedErr = ErrNotSupportMessageProtocol c.closedErr = ErrNotSupportMessageProtocol
<-c.ctx.Done()
return return
case PingMessage: case PingMessage:
@ -166,7 +170,9 @@ func (c *Client) readMessage() {
case CloseMessage: case CloseMessage:
c.closedErr = ErrClientClosed c.closedErr = ErrClientClosed
<-c.ctx.Done()
return return
default: default:
} }
} }

Loading…
Cancel
Save