聊天室实现私聊(二)

你说的幸福是影

你说的幸福是影

2016-01-29 17:54

聊天室实现私聊(二),聊天室实现私聊(二)
 


作者:网络之门

    聊天室程序是一个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")="<font color=blue"&usertime&"</font <font color=black"&username&"</font <I悄悄地对<font color=#00bb00&nbsp;"&request.FORM("whoto")&" </font耳语</I:<font color=#0000aa "&usersays&"</font<BR<BR"
'对谁说
application("chatto")=request.FORM("whoto")
'说话的人
application("owner")=username
session("chat")="true"
end if

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/asp/)

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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/asp/)

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

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

         <meta http-equiv="refresh" content="2.5"

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

展开更多 50%)
分享

猜你喜欢

聊天室实现私聊(二)

ASP
聊天室实现私聊(二)

聊天室实现私聊(一)

ASP
聊天室实现私聊(一)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

聊天室实现私聊(四)

ASP
聊天室实现私聊(四)

聊天室实现私聊(三)

ASP
聊天室实现私聊(三)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

聊天室建设详解二

ASP
聊天室建设详解二

基于PHP的聊天室(二)

PHP
基于PHP的聊天室(二)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

软件也兼职 Word2003的另类玩法

软件也兼职 Word2003的另类玩法

Linux指令篇:文件传输--uucp

Linux指令篇:文件传输--uucp
下拉加载更多内容 ↓