diff --git a/handler/im.go b/handler/im.go index 27e3d57..4fc96ee 100644 --- a/handler/im.go +++ b/handler/im.go @@ -144,7 +144,7 @@ func SRMessage(c *gin.Context) { } defer ws.Close() res := worker.GetRedis(redis_key + "_connection") - worker.SetRedisWithExpire("user_"+id.(string)+"_status", "1", time.Second*5) + worker.SetRedisWithExpire("user_"+strconv.Itoa(id1)+"_status", "1", time.Second*5) if res == "" { return } @@ -197,20 +197,20 @@ func SRMessage(c *gin.Context) { res3, _ = json.Marshal(msg) } //判断对方是否在线,若不在线则发送离线消息,否则正常发送消息 - //if worker.IsContainKey(to_user_id+"_status") == true { - // if worker.GetRedis(to_user_id+"_status") == "0" { - // msg.Type = "offline" - // msg.Msg = "offline" - // msg.From_user_id = -1 - // msg.Session = res - // res3, _ = json.Marshal(msg) - // } - //} + if worker.IsContainKey("user_"+to_user_id+"_status") == true { + if worker.GetRedis("user_"+to_user_id+"_status") == "0" { + msg.Type = "offline" + msg.Msg = "offline" + msg.From_user_id = -1 + msg.Session = res + res3, _ = json.Marshal(msg) + } + } err2 := ws.WriteMessage(websocket.TextMessage, res3) if err2 != nil { - worker.SetRedisWithExpire("user_"+id.(string)+"_status", "0", time.Second*120) //设置用户在线状态,1为在线,0为离线,5秒后过期 + worker.SetRedisWithExpire("user_"+strconv.Itoa(id1)+"_status", "0", time.Second*120) //设置用户在线状态,1为在线,0为离线,5秒后过期 } else { - worker.SetRedisWithExpire("user_"+id.(string)+"_status", "1", time.Second*5) //设置用户在线状态,1为在线,0为离线,5秒后过期 + worker.SetRedisWithExpire("user_"+strconv.Itoa(id1)+"_status", "1", time.Second*5) //设置用户在线状态,1为在线,0为离线,5秒后过期 } time.Sleep(time.Second * 1) // 每1秒查询一次 } else {