实现聊天室的悄悄话功能(中)

2016-01-29 19:26 14 1 收藏

实现聊天室的悄悄话功能(中),实现聊天室的悄悄话功能(中)

【 tulaoshi.com - ASP 】

       实现聊天室的悄悄话功能(中)
  
    聊天室程序是一个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> "&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
  
    session("chat")是一个用来记录用户是否有悄悄话的标记,当更新对话内容的时候,就通过判断这个标记来判断是否有悄悄话产生。同时。通过applicaton("chat")记录对话内容,applicaton("chatto")悄悄话的对象,application("owner")保存发言者本人(别忘了悄悄话是自己和接受悄悄话的对方可以看见的哦:(,还有,当对ALL(所有人)发悄悄话时,大家都应能看见这句瞧瞧话。
    当发言内容都分别进入了application("chats")(n)和applicaton("chat")这两个谈话缓冲区后。下一步要做的就是显示出对话内容了。这里先向大家提一下如何实现聊天事的定时刷新(客户端主动)
    在我们的html文件的头有一个这样的标记
    <meta http-equiv="refresh" content="2.5">
    这里示了html文档的更新类行,上面这个标记就是把本文档按2.5秒的速度不断自动刷新,那么利用这一点,就可以实现自动更新对话内容了。我们使用的显示对话的asp文件名为top.asp。下一节大家一起来看看它的结构。
  
  
  

 

来源:http://www.tulaoshi.com/n/20160129/1509383.html

延伸阅读
手机QQ悄悄话怎么用   1)打开手机QQ,在栏选择。   2)找到并点击,点击下方的标志。   3)然后选择要发送的QQ好友以及填写要发送的内容,完成后点击右上角即可给好友发送一条匿名的悄悄话。           注 :更多精彩教程请关注图老师手机教程栏目,图老师手机...
标签: ASP
       主要功能为:在聊天室中,每隔5分钟,向显示对话页面,发送一道题,所有用户都可答题。   答对者加相应的分值。   具体实现:在聊天室框架中加入一隐含帧,   此帧每5分钟刷新一次。   隐含帧内的ASP页内容如下:   <%@ LANGUAGE=VBs cript%>...
QQ悄悄话怎么激活?   在新版手机QQ 5.1.1版本中,新加入了悄悄话功能,可以以匿名的方式向您的QQ好友发送悄悄话,可以带来不一样的沟通体验。不过,由于目前手机QQ悄悄话还处在内测功能,需要使用此能够,如要先激活悄悄话功能。QQ悄悄话怎么激活?下面小编以详细的手机QQ悄悄话激活图文教程,告诉大家如何激活手机QQ悄悄话,详细步...
如何关闭qq悄悄话?   首先,我们打开手机qq,点击页面下方的联系人 然后点击如图所示进入生活服务 点击进入qq悄悄话 然后选择右上角的按钮进入设置悄悄话 将使用悄悄话功能关闭即可
标签: 孕前准备
2000年9月11日 16:31 精品购物指南 刚刚结婚的年轻女性经常会面对这样一种尴尬的情况,在不想要孩子的时候,意外地“有了”,这时该怎么办呢?流产恐怕是不得不面对的选择。接下来的担心是,流产会不会影响今后的生育,到想要孩子的时候会不会又怀不上了呢?人工流产和药物流产,选择哪种流产的方式对今后的生育影响小呢? ...

经验教程

865

收藏

36
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部