46 lines
1.1 KiB
C#
46 lines
1.1 KiB
C#
using NLog;
|
|
using Server.System;
|
|
|
|
namespace Server.Scheduler
|
|
{
|
|
public class SessionScheduler : System.Scheduler
|
|
{
|
|
System.Redis redis;
|
|
|
|
NLog.ILogger logger = LogManager.GetCurrentClassLogger();
|
|
|
|
public SessionScheduler(string cronData, Redis redis) : base(cronData)
|
|
{
|
|
this.redis = redis;
|
|
}
|
|
|
|
public override void Process()
|
|
{
|
|
List<LoginUser> users = redis.GetList<LoginUser>("LoginUser");
|
|
|
|
DateTime now = DateTime.Now;
|
|
|
|
Console.WriteLine($"SessionScheduler : {now.ToString()}");
|
|
|
|
//logger.Debug($"SessionScheduler : {now.ToString()}");
|
|
|
|
|
|
for (int n = users.Count - 1; n >= 0; n--)
|
|
{
|
|
if ((now - users[n].moveTime).TotalMinutes >= 1) //1분이상 지난상태
|
|
{
|
|
redis.RemoveList(n, users[n], "LoginUser");
|
|
redis.RemoveKey("UserSession", users[n].UUID);
|
|
}
|
|
}
|
|
}
|
|
|
|
public class LoginUser
|
|
{
|
|
public string UUID;
|
|
public DateTime moveTime;
|
|
}
|
|
|
|
}
|
|
}
|