// 如果缓存中存在,则直接返回 void publisher_Begin_ProcessMvc(object sender, MvcEventArgs e) { String cPath = e.ctx.url.Path; if (cPath.ToLower().IndexOf("/layouts/topnav/nav") >= 0) { if (e.ctx.web.UserIsLogin == false) { OnlineManager.Refresh(e.ctx); OnlineStats o = OnlineStats.Instance; String onlineInfo = "{\"count\":" + o.Count + ",\"member\":" + o.MemberCount + ",\"guest\":" + o.GuestCount + ",\"max\":" + o.MaxCount + ",\"maxTime\":\"" + o.MaxTime.ToShortDateString() + "\"}"; String isSite = cPath.IndexOf("/Layouts/") == 0 ? "true" : "false"; String connects = getConnectLinks(); //String json = "{\"viewer\":{\"obj\" :{\"Id\":0,\"Name\":\"guest\",\"Url\":\"\"},\"Id\":0,\"IsLogin\":false,\"IsAdministrator\":false,\"HasPic\":false}, \"owner\":{\"IsSite\":" + isSite + ", \"LoginValidImg\":" + config.Instance.Site.LoginNeedImgValidation.ToString().ToLower() + "},\"navInfo\":{\"topNavDisplay\":" + config.Instance.Site.TopNavDisplay + "}, \"online\":" + onlineInfo + "}"; String json = "{\"viewer\":{\"obj\" :{\"Id\":0,\"Name\":\"guest\",\"Url\":\"\"},\"Id\":0,\"IsLogin\":false,\"IsAdministrator\":false,\"HasPic\":false}, \"owner\":{\"IsSite\":" + isSite + ", \"LoginValidImg\":" + config.Instance.Site.LoginNeedImgValidation.ToString().ToLower() + "},\"navInfo\":{\"topNavDisplay\":" + config.Instance.Site.TopNavDisplay + "}, \"online\":" + onlineInfo + ", \"connects\":" + connects + "}"; e.ctx.RenderJson(json); e.ctx.utils.end(); e.ctx.utils.skipRender(); return; } } }
private Dictionary <String, object> getOnlineDic() { OnlineStats o = OnlineStats.Instance; Dictionary <String, object> dic = new Dictionary <string, object>(); dic.Add("count", o.Count); dic.Add("member", o.MemberCount); dic.Add("guest", o.GuestCount); dic.Add("max", o.MaxCount); dic.Add("maxTime", o.MaxTime.ToShortDateString()); return(dic); }
// 如果缓存中存在,则直接返回 void publisher_Begin_ProcessMvc(object sender, MvcEventArgs e) { String cPath = e.ctx.url.Path; if (cPath.IndexOf("/Layouts/TopNav/Nav") >= 0) { if (e.ctx.web.UserIsLogin == false) { OnlineManager.Refresh(e.ctx); OnlineStats o = OnlineStats.Instance; String onlineInfo = "{\"count\":" + o.Count + ",\"member\":" + o.MemberCount + ",\"guest\":" + o.GuestCount + ",\"max\":" + o.MaxCount + ",\"maxTime\":\"" + o.MaxTime.ToShortDateString() + "\"}"; String isSite = cPath.IndexOf("/Layouts/") == 0 ? "true" : "false"; String json = "{\"viewer\":{\"obj\" :{\"Id\":0,\"Name\":\"guest\",\"Url\":\"\"},\"Id\":0,\"IsLogin\":false,\"IsAdministrator\":false,\"HasPic\":false}, \"owner\":{\"IsSite\":" + isSite + ", \"LoginValidImg\":" + config.Instance.Site.LoginNeedImgValidation.ToString().ToLower() + "},\"navInfo\":{\"topNavDisplay\":" + config.Instance.Site.TopNavDisplay + "}, \"online\":" + onlineInfo + "}"; e.ctx.RenderJson(json); e.ctx.utils.end(); e.ctx.utils.skipRender(); return; } } //------------------------------------------------------ if (ch.shouldCache(e.ctx) == false) { return; } String pageContent = ch.ReadCache(e.ctx.url.PathAndQuery, e.ctx); if (pageContent == null) { return; } //pageContent = pageContent.Replace( "#{elapseTime}", getTimeStr() ); pageContent += getTimeJs(); e.ctx.web.ResponseWrite(pageContent.ToString()); e.ctx.utils.end(); e.ctx.utils.skipRender(); logger.Info("----------------------------------cacheEnd------------------------------------"); LogManager.Flush(); }
private void UpdateOnlineCallback(object state) { _updateOnlineTimer.Change(UpdateOnlineInterval, Timeout.Infinite); AddLostSoulsToDatabase(); using (var databaseContext = new DynamicDBContext()) { var onlineUsers = Bot.DiscordClient.Presences.Where(p => !p.Value.User.IsBot && p.Value.Status != UserStatus.Offline).ToList(); foreach (var user in onlineUsers) { var userId = user.Value.User.Id.ToString(); var onlineStats = databaseContext.OnlineStats.FirstOrDefault(p => p.UserID == userId); if (onlineStats == null) { // Remove seconds and milliseconds from date for better ordering var now = DateTime.Now.ToString("yyyy-MM-dd HH:mm"); var fixedNow = DateTime.Parse(now); onlineStats = new OnlineStats { UserID = user.Value.User.Id.ToString(), LastOnline = fixedNow, TotalTime = 0 }; databaseContext.OnlineStats.Add(onlineStats); } else { onlineStats.LastOnline = DateTime.Now; onlineStats.TotalTime += UpdateOnlineInterval / 1000 / 60; } } databaseContext.SaveChanges(); } }