讨论一下如何显示在线人数,还有所在页面,我有个思路,大家给点意见?我没有试过
建一个表存储用户状态的表,然后用AJAX在JS里LOAD和onbeforeunload时进行数据库的操作,不知道这样可以不可以?????大侠给指导指导!!能给出相关的代码最好 问题点数:20、回复次数:29Top
1 楼CNOA(中国办公自动化系统)回复于 2006-03-21 09:34:57 得分 0
我想你的思想不错,支持一下Top
2 楼sstgaps()回复于 2006-03-21 09:35:22 得分 0
自己先顶一个,这样的贴怎么就沉了呢???Top
3 楼CNOA(中国办公自动化系统)回复于 2006-03-21 09:38:47 得分 1
一般做在线人数都会在页面导入的时候做的。Top
4 楼sstgaps()回复于 2006-03-21 09:42:45 得分 0
但是我这里还有显示所在的页面,并不是只是谁在线。Top
5 楼CNOA(中国办公自动化系统)回复于 2006-03-21 09:44:54 得分 0
那可以把页面的地址也存到数据库去吧Top
6 楼scjtswj()回复于 2006-03-21 09:46:00 得分 1
建一个表记录用户所在页面,在进入每个页面时更新这个表。。Top
7 楼CNOA(中国办公自动化系统)回复于 2006-03-21 09:47:11 得分 1
是啊。论坛的在线列表就是这么做的Top
8 楼soochowgreen(Green)回复于 2006-03-21 09:49:06 得分 1
除了在数据表中纪录,还有其他方法么?
考虑到过多的数据连接对系统性能的压制。
Top
9 楼sstgaps()回复于 2006-03-21 09:51:20 得分 0
我的想法就是在LOAD的时候写入数据(用户和所在页面),然后在beforeunload删除,因为JS不能操作服务器端,现在好象只要用AJAXTop
10 楼sstgaps()回复于 2006-03-21 09:54:29 得分 0
当然还可以用Session和Application,这个问题的重点是AJAX和JS的LOAD BEFOREUNLOADTop
11 楼CNOA(中国办公自动化系统)回复于 2006-03-21 09:58:05 得分 1
其实不需要用AJAX,.Net不是有Load和OnUnload的事件吗?Top
12 楼qtbgo()回复于 2006-03-21 09:59:49 得分 0
倒奶cms完全满足
http://dnetcms.anyp.cn/
Top
13 楼scjtswj()回复于 2006-03-21 10:00:53 得分 0
是啊,可以用OnUnload事件处理Top
14 楼sstgaps()回复于 2006-03-21 10:02:00 得分 0
.NET是有Load和OnUnload的事件吗,但是我试过OnUnload好象没有什么效果,而且你想如果是你点了页面的某个按扭,OnUnload事件也是会被触发。Top
15 楼CNOA(中国办公自动化系统)回复于 2006-03-21 10:08:34 得分 1
那是因为.net按钮会Post页面的原因,所以才会触发OnUnload事件,你可以用IsPostBack判断以下哦Top
16 楼sstgaps()回复于 2006-03-21 10:10:40 得分 0
那么这样的话哪个效率有更高呢?Top
17 楼CNOA(中国办公自动化系统)回复于 2006-03-21 10:18:51 得分 1
我想用CS比AJAX要高,Top
18 楼sstgaps()回复于 2006-03-21 10:26:07 得分 0
http://www.gzgov.net/qq/index.htm?QQ=285985
那里兄弟帮我点一下,十分感谢Top
19 楼MonkWang(象写情书一样写程序)回复于 2006-03-21 10:30:16 得分 2
有思路就去实践吧!
可惜小弟不会AJAX
帮顶@
学习!Top
20 楼sstgaps()回复于 2006-03-21 10:40:49 得分 0
不能沉啊!Top
21 楼Cassava(车超)回复于 2006-03-21 11:23:05 得分 5
问题没有你想的那么简单,你现在的思路是不能精确记录在线人数的,要想精确记录在线人数,举个例子,比如聊天室显示在线人数,当用户输入妮称登陆后,服务器用Application变量记录在线人数加一,并把该用户记录到指针链表中(如果是用了没有指针链表的语言可以用数组来代替,如asp),
客户端网页在关闭浏览器的时候可以通过onunload事件和判断鼠标位置的方法判断是否是关闭浏览器,在该事件中调用Ajax方法告诉服务器该用户已经退出了,在线人数减一,客户端的代码如下:
<SCRIPT event="onunload" for="window">
if(window.event.clientX<0)
{
//是关闭浏览器
PublicAjax.KinExit('<%=Request.QueryString["MeetingID"].ToString()%>','<%=Session["feeMobile"].ToString()%>','<%=Session["StudentName"].ToString()%>'); //Ajax方法告诉服务器该用户已经退出了,在线人数减一
}
</SCRIPT>
这是我以前写的一写代码
到此很多人以为就做完了,其实这还是不能精确记录在线人数的,因为在某人网络断线的情况下,服务器是不知道该用户已经下线了的,解决的办法如下:
客户端定时给服务器发包,在服务器上建一个时间链表,该时间链表记录每个用户的上一次的定时发包时间,然后服务器定时检测该时间链表,如果检查到某用户在规定的时间内没有发包到服务器就证明该用户已经断线了。
只有这样才能精确记录在线人数
Top
22 楼sstgaps()回复于 2006-03-21 16:19:01 得分 0
TO:Cassava(车超)
首先谢谢你,看了你文章胜读10年书,但是我还有几个疑问:象你这样好象不能记录用户所在的页面 ,然后就是在客户端定时给服务器发包怎么实现?还有就是我在LOAD来进行写入用户的位置有什么不妥??Top
23 楼Cassava(车超)回复于 2006-03-21 23:06:10 得分 2
定时给服务器发包
function Window_Load()
{
window.setTimeout("Refresh()",20000);
}
function Refresh()
{
PublicAjax.Refresh("<%=MeetingID.Text%>"); //这里就是调用Ajax方法给服务器发包了
window.setTimeout("RefreshSMS()",20000); //20秒刷新一次
}
记录用户所在的页面,把上面的Refresh函数改一下
function Refresh()
{
PublicAjax.Refresh("你页面的名称"); //这里就是调用Ajax方法给服务器发包了
window.setTimeout("RefreshSMS()",20000); //20秒刷新一次
}
现在服务器不就可以通过Refresh函数的参数知道用户所在的页面了吗
Top
24 楼Pinbor(来客心动)回复于 2006-03-22 09:10:25 得分 1
可以参考我的思路去做,逻辑很清楚地!
http://www.xshweb.com/Article/108/10806.htmlTop
25 楼yzujjcb()回复于 2006-03-22 09:32:52 得分 1
顶一下Cassava(车超) 。Top
26 楼Deneral(我是中国人)回复于 2006-03-22 09:37:35 得分 1
留个脚印以后来研究Top
27 楼yuesongboy(温柔一刀)回复于 2006-03-22 12:24:37 得分 1
upTop
28 楼sstgaps()回复于 2006-03-22 17:17:26 得分 0
继续Top
29 楼sstgaps()回复于 2006-03-22 17:56:53 得分 0
UPTop
相关问题
- Asp.net页面和asp页面之间的传值问题,会得进来说说思路
- 300分求思路!! 我想做一个类似PowerPoint页面的东西....
- 谁有生成静态html页面的新闻程序或者思路阿
- asp后台程序生成前台页面的问题,给个思路
- C#生成静态页面新闻系统思路及相关源程序
- 不好意思不行我试过,定义样式表它使整个页面都是一样的先生
- asp.net2.0问题(2)如何统计在线人数,及统计当前页面的访问人数及列表?
- ************* 如何确定不同页面的访问人数及session相关值 ? **************
- 谁知道asp页面统计在线人数是什么原理
- 根据IP来判断来源区域显示不同的页面 大家有没有思路




