我想开发一个聊天室的程序,在首页中输入用户名,并让用户选择聊天房间,我想统计每个房间的在线人数.如果有多少个聊天室我就想建立多少个session对象,而且用room1,room2,room3...等序数表示session对象的名称,然后在首页的每个聊天室的后面输出这些session对象表示的在线人数,我想请问一下各位大狭我说的方法能不能实现?
在表单处理中,这样写的:
dim room,num
session("userName")=request.Form("userName")
room=request.Form("room")
application.Lock()
application(room)=application(room)+1
application.UnLock()
然后想建立一个SESSION对象,session(room)=application(room)
然后在首页中引出session对象,并把它们的值写在相应的聊天室的后面.我说的方法能实现吗?该怎么让room这个变量在index.asp中也能读取呢?或者也许建立session是多余的,直接在首页中输出application(room)的值.
我在global.asa中是这样写的:是不是我不能在global.asa中写这样的语句啊,因为这样是实现不了的?application("online")是不是记录的所以用户数量?是所有的聊天室的在线人数?如果我想实现单个聊天室的人数,该怎么办?而且我在GLOBAL.ASA中写的application("array")是不是也是所有的聊天室的在线用户名?如果我想实现显示单个聊天室的在线用户名,Global.asa用不用改动?
<script language="vbscript" runat="server">
sub session_onStart()
dim userName()
dim num
application.Lock()
application("online")=application("online")+1
application.UnLock()
num=application("online")
redim preserve username(num)
userName(num)=session("userName")
application.Lock()
application("array")=userName
application.UnLock()
end sub
sub session_onEnd()
dim num
application.Lock()
application("online")=application("online")-1
application.UnLock()
num=application("online")
dim userName,i,j
userName=application("array")
for i=Lbound(userName) to Ubound(userName)
if userName(i)=session("userName") then
for j=i to Ubound(userName)-1
userName(j)=userName(j+1)
next
end if
next
redim preserve userName(num)
application.Lock()
application("array")=userName
application.UnLock()
end sub
sub application_onStart()
application.Lock()
application("online")=0
application.UnLock()
end sub
</script>