你用ajax让在线用户每隔一定时间通知一次服务器,更新一次时间。判断用户是不是在线的时候,就看每个用户更新的这个时间戳,最后一个更新的时间超过你的设定时间,不就不在线了
解决方案 »
- 关于asp.net mvc的一个配置问题!
- 如何改变vs2003运行asp.net程序的浏览器啊
- asp.net中怎么设置TreeView的NavigateUrl的编码方式!在线等答案
- 为啥读不出TextBox控件的值?
- 菜鸟问题
- 请问如何获取web客户端的相关系统信息,?
- DataGrid 添加LinkButton编辑按钮,__doPostBack 函数的问题
- 2005/10 举报.处理.建议专用贴(asp.net)
- 水晶报表:图表X轴的文字重叠的问题
- VS2010调试JS时总是弹出“Visual Studio实时调试器”的对话框
- 关于ajax中UpdatePanel的疑惑
- ASP 批量显示
2。做个定时刷新,读取数据库信息。
3。做成全屏模式,自定义一个“退出”按钮,关闭时在“在线表”中删除当前登录用户信息。
4。屏蔽ALT + F4热键。
--------------完美的签名线-----------------
网页游戏开发第一站 http://dev.web863.com
ajax: <script language="JavaScript" type="text/JAVAscript">
function aa(i)
{
document.form1.xxzz.value=i;
}
function checkregusername()
{ var XMLhttp;
try{xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");}
catch (e)
{
try{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
catch (e)
{
try{xmlhttp=new XMLHttpRequest();}
catch(e)
{
var cs=document.getElementById("erroruname");
cs.innerHTML=" <font color='#ff0000'>ddd </font>";
}
}
} XMLhttp.open("get","2.ASPx?n="+Math.random(),true);
XMLhttp.onreadystatechange=function()
{
if(XMLhttp.readyState==4)
{
if(XMLhttp.status==200)
{
if (XMLhttp.responseText=="xxxxx ")
{
msg="0000!";
}
else
{
msg=XMLhttp.responseText;
}
}
else
{
msg="正在载入数据.......";
}
var cs=document.getElementById("erroruname");
cs.innerHTML=msg;
diaoyong()//回调函数--------------------------////////////////////////////////////
}
else
{
}
}
XMLhttp.send(null);
return false;
}
</script> <body>
<div id="erroruname"> <div>
//////============================================================
<script>
function huidiao()
{
setTimeout("checkregusername()",60000)
}
setTimeout("checkregusername()",60000)
</script>
//////=================================================================
</body> 每格1分钟象2.ASPx提交一次数据 ok
http://topic.csdn.net/t/20041208/13/3626050.html
然后在Application_Start里面启用程序启用的时候先删除所有在线的用户 然后在定时器到达时间间隔时Elapsed触发清理不在线的用户
而判断用户是不是在线 可以在WEBCONFIG里面配置一个httpModules 在启用时就调用一个添加在线用户的方法
一个是当前活动时间,另一个是最近一次访问时间
用ajax去修改用户自己当前活动时间,然后再把所有用户记录的最近一次访问时间都修改为当前的时间
这时候去访问在线用户时判断用户的这两个时间之间的差值是否小于20秒(这个值跟访问数据库或者是网速有关系)。
当用户点击关闭浏览器后就不会更新用户的当前时间了,但是他的另一个时间点是被其他人去更新的
所以这时候这两个时间点之差肯定是大于前面设计的20秒的。那表示它当前不在线。
通过ajax中或JS里定时器,定时查询用户是否在线,在线设置状态
也可获取在线用户,保存在hashtable等里,再查询
这样的话, 用户少不会出现问题..
如果有8000个用户都在线, 那么 定时发送会不会照成你服务器的荡机 ?
计算这么多其实没有必要.. 顶多记个上次登陆时间就够了. 往客户端发送段cookie;