聊天室实现私聊(三)

聊天室程序是一个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。下一节大家一起来看看它的结构。

本文作者:相关阅读:

AMD显卡最新Linux系统版本驱动大幅更新(图)

Visual Studio 2010自动执行属性

JavaBean实现多文件上传的两种方法

CSS网页布局入门教程1:一列固定宽度

Vista版本Plus Pack新功能抢先看

微软给出购买Netbook的建议

查看“直接查询结果为空”的视图

如何在Access 2007数据库中添加附件

linux下飞快的BT客户端rtorrent设置

Prototype使用指南之hash.js

用JavaScript实现 铁甲无敌奖门人 “开口中”猜数游戏

改善用户体验的五款jQuery插件分享

CSS的优化&技巧

采用PHP网页方式建站已经成为主流

聊天室私聊php代码,window_聊天室实现私聊(三),聊天室程序是一个application和se - phpStudy...相关推荐

  1. python基于udp的网络聊天室再用tkinter显示_Python实现网络聊天室的示例代码(支持多人聊天与私聊)...

    实验名称: 网络聊天室 功能: i. 掌握利用Socket进行编程的技术 ii. 掌握多线程技术,保证双方可以同时发送 iii. 建立聊天工具 iv. 可以和单人聊天 v. 可以和多个人同时进行聊天 ...

  2. asp.net ajax聊天室,ASP.NET MVC4异步聊天室的示例代码

    本文介绍了ASP.NET MVC4异步聊天室的示例代码,分享给大家,具体如下: 类图: Domain层 IChatRoom.cs using System; using System.Collecti ...

  3. python实现简易聊天需要登录博客园zip下载_Python基于Socket实现简易多人聊天室的示例代码...

    前言 套接字(Sockets)是双向通信信道的端点. 套接字可以在一个进程内,在同一机器上的进程之间,或者在不同主机的进程之间进行通信,主机可以是任何一台有连接互联网的机器. 套接字可以通过多种不同的 ...

  4. java聊天室代码_java聊天室的实现代码

    本文实例为大家分享了java实现聊天室的具体代码,供大家参考,具体内容如下 聊天室界面: 源码: public class ClientFrame extends Frame { private Te ...

  5. 多人聊天功能代码php,基于swoole实现多人聊天室

    本文实例为大家分享了swoole创建多人多房间聊天室的具体代码,供大家参考,具体内容如下 核心的swoole代码 基本的cs(client-sercer)结构不变,这里利用的是redis的哈希和set ...

  6. python聊天室详细教程_python简单实现聊天室功能(代码教程)

    聊天室程序需求: 我们要实现的是简单的聊天室的例子,就是允许多个人同时一起聊天,每个人发送的消息所有人都能接收到,类似于 QQ 群的功能,而不是点对点的 QQ 好友之间的聊天.如下图: 这里我们首先要 ...

  7. 【聊天室系统源码】多语言海外版匿名中英文聊天室开发

    随着国际化发展的潮流和趋势,越来越多的各国友人通过社交软件在一起聊天,交流和学习,但是各国的专用社交软件都有一定的地域保护,不会让其他地区的网友随意注册和使用,当然我们国家也不让随意使用海外的社交软件 ...

  8. 使用 Python 实现一个简单的智能聊天机器人(附完整代码)

    文章目录 简要说明 总体的思路 需要准备的环境 接收用户的语音输入,并将其存为音频文件 技术提升 调用百度AI接口, 识别音频文件并以文本信息返回 请求智能机器人, 发送文本信息, 返回智能聊天内容 ...

  9. 教你一键快速生成后台代码,这样和测试小姐姐聊天的时间又多了

    写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字.我热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的. 这博客是对自己学习的一点点总结及记录,如果您对 Java.算法 感兴 ...

最新文章

  1. 保证同一个账号同时只能在一个设备上登录
  2. 基于Http替补新闻WebService数据交换
  3. 写代码水平的几个发展阶段
  4. begintrans返回值_SQL事务回滚 ADO BeginTrans, CommitTran 以及 RollbackTrans 方法
  5. 实例42:python
  6. 低代码实现传统装饰企业的管理跃迁
  7. ubuntu保存_Arch与Ubuntu安装软件对比
  8. eclipse快捷键大全---分操作归纳
  9. am335x linux修改ip,Linux 修改代码以支持LED 控制(board-am335xevm)
  10. Unity精华☀️Audio Mixer终极教程:用《双人成行》讲解它的用途
  11. sharepoint 服务器错误: http://go.microsoft.com/fwlink?LinkID=96177
  12. 【沧海拾昧】微机原理:可编程串行接口芯片8251A
  13. CuraEngine
  14. python一键安装框架_《自拍教程76》Python 一键批量安装第三方包
  15. android动态改变布局,Android 动态添加布局的两种方式
  16. 广州启明星辰的面试经历
  17. Python安装教程(附带安装包)
  18. 第七周作业:注意力机制学习的part2
  19. 2.系统测试流程规范
  20. 根据排队论阐述路由器和高速公路的拥堵以及拥堵缓解问题(二)

热门文章

  1. 图论5:Tarjan!塔尖!
  2. Microsoft office 2007以上版本,EXCEL 将xlsx文件转换成pdf文件出现:尚未安装打印机。转换失败...
  3. Br 2020最新版下载地址 一键安装Windows
  4. 爱迪生与乔布斯:两大发明家的相似与不同之处
  5. 关于戒掉LOL失败的思考
  6. u盘中的android文件夹图标不显示了,u盘中文件不能显示解决方法集
  7. Firefox在iOS设备上登陆国际版账号
  8. 面向对象(上):从生活中的类比说起-day9
  9. 在Rybka之后的心灰意冷
  10. 妻子负债千万,丈夫是否要为之承担还款责任?