灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:3021回复:0

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

楼主#
更多 发布于:2011-09-01 02:07
聊天室关键技术[用户断线]处理
(01-2-23 64)


在编聊天室时,处理用户断线是一个刺手的问题,特别是放到免费网站上,如果一味地靠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) = "【公告】";hrefname;"" ;" >"; "断线..." ; "" ; " <" ; time() ; ">
" ; application
("content" ; j)
end if
next
end if
end if
next


喜欢0 评分0
游客

返回顶部