asp.net mvc 项目如何统计在线人数?
发布网友
发布时间:2022-04-27 11:18
我来回答
共2个回答
热心网友
时间:2022-04-27 12:48
统计在线人数,你就需要对不同IP访问你的网站的人记录新session +1一次
如果这个人退出了,会话关闭,session关闭,-1
写在Globle里
protected void Application_Start(Object sender, EventArgs e)//当前应用程序启动这件事会发生
{
SqlConnection con = new SqlConnection(connectionString);
con.Open();
SqlCommand cmd = new SqlCommand("select Count(*) from UserInfo", con);
int count = Convert.ToInt32(cmd.ExecuteScalar());
con.Close();
Application["total"] = count;//Application是个全局变量,每个会话都可对他操作
Application["online"] = 0;
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
}
protected void Session_Start(Object sender, EventArgs e)//客户端一连接到服务器上,这个事件就会发生
{
Session.Timeout = 1;
Application.Lock();//锁定后,只有这个Session能够会话
Application["total"] = (int)Application["total"] + 1;
Application["online"] = (int)Application["online"] + 1;
Application.UnLock();//会话完毕后解锁
}
protected void Session_End(Object sender, EventArgs e)
{
Application.Lock();
Application["online"] = (int)Application["online"] - 1;
Application.UnLock();
}追问这个是根据Session的状态来统计的吧?是不是不是实时的?
追答这个都不可能做到实时的
无论怎么做
除非做一个 心跳设计
每秒自动 抛数据
热心网友
时间:2022-04-27 14:06
项目如何统计在线人数,这样统计。