您的位置:首页精文荟萃软件资讯 → 聊天室实现私聊二

聊天室实现私聊二

时间:2004/10/7 19:04:00来源:本站整理作者:蓝点我要评论(0)


            
             
              
             
            

               
               

            



            聊天室程序是一个application和session对象结合性很强的asp程序。首先,它比较具有实时性,聊天速度太慢,那么没有人会喜欢的,而且在多人同时发言的时侯,如果程序处理不好,那么难免会发生张官李戴的现象,比如说明明张三说的话在先。李四说的话在后,但显示出来的结果却是倒转了。还有就是每个客户端显示的谈话内容不同步。(这里强调一点,聊天室的谈话内容自动更新方式主要是两种,一种是服务器自动更新,也就是它的聊天显示内容区是一个正在打开中的html流,每当服务器接收到用户的谈话内容就会发送到用户的浏览器中。另一种是用户端定时向服务器端发出更新请求。后者的实时性没前者强。但制作起来简单,要完成服务器端自动更新,光靠asp是无法完成的。因为ASP没有内置的延时功能。现在所举例的聊天室主要是以后者来说明的,但方法同样可以前者里使用)

  要解决多个用户同时发言以及显示的顺序问题,那么就必须为谈话内容建立一个缓冲区,就好象操作系统的键盘缓冲区的功能一样,即使系统正在忙于处理别的任务,但还是可以准确地接受用户输入。

  上面的程序例子:

dim chats(20)
for n=1 to 20
chats(n)=application("chats")(n)
next
  就是建立了一个20个元素的chats数组,那么只需要再建立一个全局公用的计数器(用application对象来保存),用以指示当前最新的发言内容是在那一个元素当中。而每个用户又定义一个session对象的计数器。用以记录当前聊天者本机显示的信息是显示到那一条谈话记录上。两者之差的谈话内容都必须在下一次更新说话内容的时侯显示出来。

  chats数组作为一个谈话缓冲区,是需要循环使用的。比如第一句发言的保存在chats(1)中,第二十句则保存在chats(20)中,而第二十一句则重新使用chats(1)来保存,而把第一句的内容覆盖掉。而chats数组只是用于处理公共的谈话内容。也就是不是“悄悄话”如果把悄悄话也作为一条新的信息保存在这里,那么就会影响的计数器了。因为对于非悄悄话的聊天对象来说。这句话是无意义的。为了减少条件判断,就把悄悄话另外用application("chat")这个应用对象变量来保存。在悄悄话的处理用,小虎并没有使用缓冲区,因此当同一聊天室内多个网友同时使用悄悄话功能时,就可能出现有的悄悄话在没被显示出来之前,被漏掉的缺点,大家不妨可以发挥自己的智慧去改进一下哦:)

  当处理完chats的对话内容后。必须把它重新存储到application("chats")(n)这个全局的谈话缓冲区中,那样才能让所有用户共享对话内容。

  下面是对耳语的谈话处理

'耳语处理
application("chat")=""&usertime&" "&username&" 悄悄地对 "&request.FORM("whoto")&" 耳语: "&usersays&"

"
'对谁说
application("chatto")=request.FORM("whoto")
'说话的人
application("owner")=username
session("chat")="true"
end if

  session("chat")是一个用来记录用户是否有悄悄话的标记,当更新对话内容的时候,就通过判断这个标记来判断是否有悄悄话产生。同时。通过applicaton("chat")记录对话内容,applicaton("chatto")悄悄话的对象,application("owner")保存发言者本人(别忘了悄悄话是自己和接受悄悄话的对方可以看见的哦:(,还有,当对ALL(所有人)发悄悄话时,大家都应能看见这句瞧瞧话。

当发言内容都分别进入了application("chats")(n)和applicaton("chat")这两个谈话缓冲区后。下一步要做的就是显示出对话内容了。这里先向大家提一下如何实现聊天事的定时刷新(客户端主动)

在我们的html文件的头有一个这样的标记



这里示了html文档的更新类行,上面这个标记就是把本文档按2.5秒的速度不断自动刷新,那么利用这一点,就可以实现自动更新对话内容了。我们使用的显示对话的asp文件名为top.asp。下一节大家一起来看看它的结构。

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本