当前位置: 首页 > 图文教程 > 网络编程 > ASP > 聊天室关键技术[用户断线]处理

ASP
ASP正则表达式技巧
ASP Access实现网站计数器(访问量)
ASP新闻分页,将一篇过长的文章分页,生成静态页面
一些关于asp 购物车的想法
一个sql查询器,自动画表格填字段
ASP实现文件直接下载的代码
把网页中的(电话,qq等数字)生成图片的ASP程序
asp长文章用分页符来分页显示
Asp函数介紹(37个常用函数)
ASP中的面向对象类
分页实现方法的性能比较
asp ajax跨域提交数据
asp修改文件和文件夹的名字的代码
ASP 多关键词查询实例代码
asp被杀毒软件误删的解决方法
asp 多关键词搜索的简单实现方法
asp 根据IP地址自动判断转向分站的代码
asp dictionary对象的用法
ASP 千万级数据分页的存储过程
ASP隐藏真实文件的下载功能实现代码

ASP 中的 聊天室关键技术[用户断线]处理


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 61 ::
收藏到网摘: n/a

  在编聊天室时,处理用户断线是一个刺手的问题,特别是放到免费网站上,如果一味地靠global.asa,什么时候触发session_onend,application_onend,都是一个不确定的数字,在设计时,合理地安排会带来意想不到的好处。
    那么有什么最简便办法处理用户断线呢?
    笔者经过试验,有了以下的方法:
    聊天室用N个application("user" & N)来保存用户名,再用application("TimeBegin")来保存每个用户的登录时间,同时,在用户登录时用session("TimerBegin")保存登录时间(timer),在发言区设定刷新时间为N秒,每次刷新将session("TimeBegin")的时间更新,同时判断timer - application("user"&session(userID)) 是否>N秒,如果是则说明该用户没有自动刷新,即意味着已经断线,即可将该application("user"&N)设为空值,再提示该用户已退出即可。
        部分代码:
    total = application("AllPeople")'聊天总人数
    aryHuman = split(total,";")
    for i = lbound(aryHuman) to ubound(aryHuman) - 1
    if application("user" & i) = "online" then
    if int(timer) - int(application("TimeBegin" & i)) > 120 then
    application("user" & i) = ""
    temp = aryHuman(i)
    aryName = split(temp,",")
    hrefname =  aryName(0)
    for j = lbound(aryHuman) to ubound(aryHuman) - 1
    if application("user" & j) = "online" then
    application("content" & j) = "<FONT color=#000000>【公告】"&hrefname&"</FONT>" &"<font  color=#F08000
>"& "断线..." & "</font><font color = #000000 class=p9>" & "   <" & time() & "></font><br>" & application
("content" & j)
    end if
    next
    end if
    end if
    next