您的位置:首页技术开发ASP技巧 → 数据库聊天室的“无刷新”技术要点

数据库聊天室的“无刷新”技术要点

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

聊天室是网络实时交互的最常应用之一。聊天室的制作要解决好以下问题。

1、谁在发言

2、讲给谁听

3、讲些什么

与ICQ不同,ICQ 的数据流是一对一的关系。只要解决好上面三个问题就

可以实现。

聊天室由于存在一对多、多对一、一对一等多种数据关系,因此就有一个

数据的存放问题。

ASP 聊天室的数据存放一般有三种形式: 一是用全局变量Application 和

Session对象。这种形式速度快效果好,但系统资源消耗太大。二是应用读

数据库实现。这种方法简明但服务器频繁读写数据据库很累。第三种可用

读写TXT文件完成。适合简单的聊天室

三种方法都有一个共性的特点:客户端要获取新的聊天数据,必需刷新

调用。刷新时间过短,屏幕晃动厉害,刷新时间过长,等待时间太多感速度

太慢。于是人们分别用触发刷新与自动刷新结合从感觉上得到改善。二是利

用隐藏帧进行刷新再把内容加在显示帧上,形成所谓“无刷新”聊天室,解

决了屏幕晃动问题。

“无刷新”聊天室要解决的技术问题有:

一、如何判断新数据

二、新数据的提取

三、如何让客户断在有新数据时能及时更新

以上一、二用Application很容易实现,但第三个问题不容易解决。用数据

库做聊天室,第三个问题相对容易,但第一、二个问题要费点精神。笔者用

数据库做的聊天室采用了“无刷新”技术,没有用一个Application,主要

的技术要点是:

数据库中另设置只有一个字段的表,字段名:BS

用户每次登陆读一次BS 的值。 设一个Session别作为每一个具体用户的

当前发言次数,初始为 BS-1。

用户每发言一次使 BS + 1(Session 值不此时不加,形成Session与BS差)

在隐性刷新帧上判断:

如果 BS 与 Session 有差,则读数据库将新数据读出并在显示帧显示。

Session+1 表示新数据已经读出,不再重读。

反复此过程,直到所有新数据据读出并显示。此时 BS = Session

上述方法解决了上面讲的 判断新数据和新数据的提取的问题。由于新数据

本身没有任何变化,依然原样存放在数据库中,客户端无论时间差多大,只

要自身的Session与BS有差,一当读库,差多少多多少条记录,解决了客户端

刷新差异带来的不显示问题。

以上方法,当然也可以用Application来设置 BS。还有一但BS 到了一定值

时(看同时发言人数而定),要重置为 1 。

以上方法在 IIS 4 平台,局域网、因特网通过。


相关阅读 Mac访问Windows共享文件夹Windows 7正版系统验证方法windows 8.1系统版本号查看方法Windows 8.1系统电话激活时无法输入微软返回代码解决方法Windows 8如何调整屏幕分辨率windows8.1磁盘占用100%解决方法Mac双系统如何删除Boot Camp安装的Windows分区Apple教你如何在Mac 上运行 Windows

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 VB.NET 2005编写定时关 Jquery get/post下乱码解决方法 前台gbk gb如何使用数据绑定控件显示数据ASP脚本循环语句ASP怎么提速

人气排行 轻松解决"Server Application Error"和iis"一起学习DataGridView调整列宽用ASP随机生成文件名的函数Jquery get/post下乱码解决方法 前台gbk gbODBC Drivers错误80004005的解决办法返回UPDATE SQL语句所影响的行数的方法用Javascript隐藏超级链接的真实地址两个不同数据库表的分页显示解决方案