public LoginResponse Logout(String reason, String token) { var node = DecodeToken(token, Setting.Current.TokenSecret); if (node != null) { var olt = GetOnline(node); if (olt != null) { var msg = $"{reason} [{node}]]登录于{olt.CreateTime},最后活跃于{olt.UpdateTime}"; WriteHistory(node, "节点下线", true, msg); olt.Delete(); var sid = $"{node.ID}@{UserHost}"; _cache.Remove($"NodeOnline:{sid}"); // 计算在线时长 if (olt.CreateTime.Year > 2000) { node.OnlineTime += (Int32)(DateTime.Now - olt.CreateTime).TotalSeconds; node.SaveAsync(); } NodeOnlineService.CheckOffline(node, "注销"); } } return(new LoginResponse { Name = node?.Name, Token = null, }); }
private static void InitAsync() { // 配置 var set = NewLife.Setting.Current; if (set.IsNew) { set.DataPath = "../Data"; set.Save(); } // 初始化数据库 var n = App.Meta.Count; AppStat.Meta.Session.Dal.Db.ShowSQL = false; // 在线管理服务 _online = new NodeOnlineService(); _online.Init(); }