|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
聊天室是网络实时交互的最常应用之一。聊天室的制作要解决好以下问题。 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 平台,局域网、因特网通过。 返回类别: 教程 上一教程: 提高ASP性能的22个技巧(一) 下一教程: 如何用ASP编写网站统计系统三 您可以阅读与"数据库聊天室的“无刷新”技术要点"相关的教程: · 实现聊天室在线人员无刷新所需要的JavaScript技术 - 2 · 实现聊天室在线人员无刷新所需要的JavaScript技术 - 1 · 实现聊天室在线人员无刷新所需要的JavaScript技术 - 3 · XMLHTTP+JAVASCRIPT+ASP写得聊天室,无刷新实现(二) · 浅谈无刷新取得远程数据技术 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |