用ASP做一聊天程序,如何判断客户'异常离开'?(比如说他的机子突然掉电)

Lincon 2000-08-09 08:43:00
...全文
314 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yiwei 2000-08-11
  • 打赏
  • 举报
回复
用一个定时刷新的页面,然后在程序里每一个response.write后面判断response.isclientconnect,如果false则表示该用户已关闭窗口。
VictorYu 2000-08-11
  • 打赏
  • 举报
回复
SESSION 超时
tingweb 2000-08-11
  • 打赏
  • 举报
回复
..
yiwei 2000-08-11
  • 打赏
  • 举报
回复
给分给分!!!
Lincon 2000-08-11
  • 打赏
  • 举报
回复
太好了!多谢各位!
feng_bd 2000-08-11
  • 打赏
  • 举报
回复
方法2:
惭愧惭愧……
原来ASP已经提供了动态检查客户端状态的方法。用不着自己去费劲维护反映客户端状态的数据。
这样就可以了:
<%
'检查客户端状态
If Not Response.IsClientConnected Then
'取得该客户端的sessionid
Shutdownid = Session.SessionID
'结束与该客户端的对话
Shutdown(Shutdownid)
End If
%>
不过吗,我前面的方法倒是用cgi或isapi也能实现。所以也还算没白费劲。
xh_zhou 2000-08-11
  • 打赏
  • 举报
回复
我也碰到过类似的问题,我的解决方法是:在用户第一次连接的时候,记录下来用户号,即:SESSION.SESSIONID;这个操作在GLOABAL.ASA文件的session_onstart事件中进行.
然后把这些id存到一个应用程序变量中,在session_one事件中找出相应的id号,并从数组中删除此用户的ID.
feng_bd 2000-08-11
  • 打赏
  • 举报
回复
①设计思想
显然,要想处理诸如掉电之类异常,不可能让客户端在退出主动前主动声明。所以,只能由服务器端在相关操作前检查客户端状态。而作为其检查对象的数据应当能反映客户端的状态。即该状态数据应定时由客户端维护,由服务器端检查。

②数据结构设计
当前连接表(连接ID号,连接状态=[可用|不可用])。逻辑结构用线性表就可以,想快一点的话,也可以用二叉树来提高访问速度。

③算法设计(我称之为"争执算法")
客户端每次登录后,服务器端在当前连接表中添加一个节点,其"连接状态"为"可用",并返回其"ID号"到客户端;每隔一定时间(如10分钟),客户端执行一次提交,提交内容是"ID"号,在该提交的服务器端处理脚本中,将该"ID号"对应的节点的"连接状态"置为"可用";服务器端则是每隔同样长度的一定时间将先将所有所有"连接状态"为"不可用"的节点删除,再将其余节点的"连接状态"置为"不可用"。

④实现办法
数据结构的物理实现:可以有多种方式:可以用内存中的application变量(此法空间效率不佳),也可以用数据日志文件或干脆用数据库(此法时间效率不佳)中。
算法的实现:关键是定时调用。这可以使用类似于IntervalID = setInterval("TimerFunc", 1000, VBScript)的脚本语句。另外,我觉得,服务器端定时维护的这段代码计算量计算量较大又被频繁执行,所以有必要做成COM组件。

不知各位兄弟是怎么做的,有无效率更高之法?请不吝赐教。


qiuhao 2000-08-10
  • 打赏
  • 举报
回复
客户端定时刷新判断客户是否连接

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧