diff --git a/internal/biz/router.go b/internal/biz/router.go index 1ad473e..906f9f0 100644 --- a/internal/biz/router.go +++ b/internal/biz/router.go @@ -214,6 +214,11 @@ func sendWithTimeout(c *websocket.Conn, data entitys.Response, timeout time.Dura done := make(chan error, 1) go func() { + defer func() { + if r := recover(); r != nil { + done <- fmt.Errorf("panic in MsgSend: %v", r) + } + }() done <- entitys.MsgSend(c, data) }() diff --git a/internal/entitys/response.go b/internal/entitys/response.go index 0031d5e..d5ba6dc 100644 --- a/internal/entitys/response.go +++ b/internal/entitys/response.go @@ -47,6 +47,8 @@ func MsgSet(msgType ResponseType, msg string, done bool) []byte { } func MsgSend(c *websocket.Conn, msg Response) error { + // 检查上下文是否已取消 + jsonByte, _ := json.Marshal(msg) return c.WriteMessage(websocket.TextMessage, jsonByte)