From 75a0cb9f3cda42ab5c0a7e9a8bedd8dd4f46e890 Mon Sep 17 00:00:00 2001 From: junleea <354425203@qq.com> Date: Wed, 3 Jul 2024 17:37:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=81=8A=E5=A4=A9=E6=97=B6?= =?UTF-8?q?=E5=BF=83=E8=B7=B3=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handler/im.go | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/handler/im.go b/handler/im.go index 9398d4e..dd0c39b 100644 --- a/handler/im.go +++ b/handler/im.go @@ -178,19 +178,30 @@ func SRMessage(c *gin.Context) { for { if v := clients[ws]; v == true { res2 := worker.PopRedisListLeft(res + "_" + strconv.Itoa(id1)) + var res3 []byte + var msg proto.Message if res2 != "" { - var msg proto.Message msg.Type = "msg" msg.Msg = res2 msg.From_user_id = id1 msg.Session = res - res3, _ := json.Marshal(msg) - err2 := ws.WriteMessage(websocket.TextMessage, res3) - if err2 != nil { - break - } + res3, _ = json.Marshal(msg) + } else { + //若无消息则发送心跳包 + msg.Type = "check" + msg.Msg = "check" + msg.From_user_id = -1 + msg.Session = res + res3, _ = json.Marshal(msg) } - time.Sleep(time.Second * 1) // 每100毫秒查询一次 + err2 := ws.WriteMessage(websocket.TextMessage, res3) + if err2 != nil { + clientsMux.Lock() + delete(clients, ws) + clientsMux.Unlock() + break + } + time.Sleep(time.Second * 1) // 每1秒查询一次 } else { clientsMux.Lock() delete(clients, ws)