From 3df39a8382c16866540456868cbd12b1bc41213a Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Tue, 2 Jul 2024 16:43:43 +0800 Subject: [PATCH] online cache --- internal/msggateway/online.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/internal/msggateway/online.go b/internal/msggateway/online.go index ec03fc803..b50608f93 100644 --- a/internal/msggateway/online.go +++ b/internal/msggateway/online.go @@ -18,7 +18,9 @@ func (ws *WsServer) ChangeOnlineStatus(concurrent int) { if concurrent < 1 { concurrent = 1 } - scanTicker := time.NewTicker(time.Minute * 3) + const renewalTime = cachekey.OnlineExpire / 3 + //const renewalTime = time.Second * 10 + renewalTicker := time.NewTicker(renewalTime) requestChs := make([]chan *pbuser.SetUserOnlineStatusReq, concurrent) changeStatus := make([][]UserState, concurrent) @@ -97,8 +99,11 @@ func (ws *WsServer) ChangeOnlineStatus(concurrent int) { select { case <-mergeTicker.C: pushAllUserState() - case now := <-scanTicker.C: - pushUserState(ws.clients.GetAllUserStatus(now.Add(-cachekey.OnlineExpire/3), now)...) + case now := <-renewalTicker.C: + deadline := now.Add(-cachekey.OnlineExpire / 3) + users := ws.clients.GetAllUserStatus(deadline, now) + log.ZDebug(context.Background(), "renewal ticker", "deadline", deadline, "nowtime", now, "num", len(users)) + pushUserState(users...) case state := <-ws.clients.UserState(): log.ZDebug(context.Background(), "OnlineCache user online change", "userID", state.UserID, "online", state.Online, "offline", state.Offline) pushUserState(state)