feat(session): 实现同平台抢登互踢功能,优化会话踢下线逻辑
新增同平台会话踢下线能力,将iOS/Android/mobile归为同一移动分组,web仅匹配web;扩展会话存储接口支持按平台、带原因踢除会话,同步更新集群广播逻辑与各调用点,统一传递踢下线原因参数
This commit is contained in:
@@ -1293,6 +1293,11 @@ func (s *Session) onLogin(msgID string, timestamp time.Time, rec *auth.Rec, miss
|
||||
if err := store.MarkUserOnline(s.tenantID, s.uid, s.sid, currentNodeID(), s.platf, s.userAgent); err != nil {
|
||||
logs.Warn.Println("s.onLogin: failed to mark user online", s.uid, err, s.sid)
|
||||
}
|
||||
// 同平台抢登互踢:新登录踢掉同平台旧会话,异平台共存。
|
||||
if globals.sessionStore != nil {
|
||||
globals.sessionStore.EvictUserPlatform(rec.Uid, s.platf, s.sid, "replaced_by_new_login")
|
||||
}
|
||||
publishRealtimeEvictUserPlatform(s.tenantID, rec.Uid, s.platf, "replaced_by_new_login", s.sid)
|
||||
// Reset expiration time.
|
||||
rec.Lifetime = 0
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user