From c8ba439a2c39024c004c579ef73c2512870cc7bb Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 24 Mar 2023 16:56:02 +0800 Subject: [PATCH 1/3] ws update --- internal/msggateway/client.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/msggateway/client.go b/internal/msggateway/client.go index 1ba36f458..0f097f7a8 100644 --- a/internal/msggateway/client.go +++ b/internal/msggateway/client.go @@ -71,6 +71,9 @@ func (c *Client) ResetClient(ctx *UserConnContext, conn LongConn, isCompress boo c.userID = ctx.GetUserID() c.ctx = ctx c.longConnServer = longConnServer + c.isBackground = false + c.closed = false + c.closedErr = nil } func (c *Client) pongHandler(_ string) error { c.conn.SetReadDeadline(pongWait) From 4c18e47e9689f65c67ea12ff82617377ecbac08e Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 24 Mar 2023 16:57:50 +0800 Subject: [PATCH 2/3] ws update --- internal/msggateway/client.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/msggateway/client.go b/internal/msggateway/client.go index 0f097f7a8..78062441d 100644 --- a/internal/msggateway/client.go +++ b/internal/msggateway/client.go @@ -95,6 +95,7 @@ func (c *Client) readMessage() { c.closedErr = returnErr return } + log.ZDebug(c.ctx, "readMessage", "messageType", messageType, "message", string(message)) if c.closed == true { //连接刚置位已经关闭,但是协程还没退出的场景 c.closedErr = ErrConnClosed return From 3239dfe0a0484e570ee588af38d59474ea6af3b9 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 24 Mar 2023 17:34:16 +0800 Subject: [PATCH 3/3] ws update --- internal/msggateway/client.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/msggateway/client.go b/internal/msggateway/client.go index 78062441d..5ea9d48c6 100644 --- a/internal/msggateway/client.go +++ b/internal/msggateway/client.go @@ -18,6 +18,7 @@ import ( var ErrConnClosed = errors.New("conn has closed") var ErrNotSupportMessageProtocol = errors.New("not support message protocol") var ErrClientClosed = errors.New("client actively close the connection") +var ErrPanic = errors.New("panic error") const ( // MessageText is for UTF-8 encoded text messages like JSON. @@ -82,6 +83,7 @@ func (c *Client) pongHandler(_ string) error { func (c *Client) readMessage() { defer func() { if r := recover(); r != nil { + c.closedErr = ErrPanic fmt.Println("socket have panic err:", r, string(debug.Stack())) } c.close() @@ -95,7 +97,7 @@ func (c *Client) readMessage() { c.closedErr = returnErr return } - log.ZDebug(c.ctx, "readMessage", "messageType", messageType, "message", string(message)) + log.ZDebug(c.ctx, "readMessage", "messageType", messageType) if c.closed == true { //连接刚置位已经关闭,但是协程还没退出的场景 c.closedErr = ErrConnClosed return