您当前的位置:主页 > www.879kj.com > 正文

聊天室的一个小思路

2019-10-30 02:48  作者:admin 点击:次 

  聊天室的一个小思路._幼儿读物_幼儿教育_教育专区。聊天室的一个小思路.

  第一章:绪论 1.1 设计思想 1.2 开发工具和相关技术简介 第二章:聊天室总体分析和设计 2.1 聊天室的运行原理 2.2 聊天室的功能 2.3 聊天室的页面结构设计 2.4 2.5 聊天室的程序结构设计 数据库结构设计 第三章:聊天室的详细设计 1. 变量说明 2. 聊天室的核心引擎(全局聊天消息分发引擎)设计 3. 用户客户端聊天信息输入与发送模块设计 4. 用户客户端全局聊天信息接收与显示模块设计 5. 全局聊天消息缓冲 6. 实例聊天室列表 7. 聊天室在线. 聊天用户个人信息保存模块 10. 聊天室显示面板属性个性化设置模块 10.1 聊天对象选择功能 10.2 聊天者名字修改功能 10.3 公聊私聊模式切换功能 10.4 文字背景色前景色设置功能 10.5 聊天面板屏幕显示字体设置 10.6 自动滚屏设置功能 11. 12. 登陆聊天室模块 退出聊天室模块 第四章:聊天室运行环境构架与说明 4.1 4.2 4.3 运行环境要求 运行环境构建 聊天流程说明 第五章:参考文献 附录:聊天室源代码 第 一 章 绪论 在 Internet(互连网)飞速发展的今天,上网成为越来越多人们的选择。有关的网络技术也 层出不穷。现今活跃在 WEB 站点中的 ASP 就是近年才发展起来的一项新型技术。ASP 功 能强大、本领高强,利用 ASP 功能时几乎没有什么限制,可以实现动态页面。本文主要介 绍了 ASP 技术相关的基础知识,并探讨了利用 ASP + SQL server 建立聊天室的设计思想、 方法及设计过程, 详细地分析了各个模块的功能及实现方法。 本文所实现的聊天室具有良好 的程序结构和人机交互界面,通用性强,可应用于不同需求的网站。 1.1设计思想 在互联网上,传统的网站或用户都使用类似于 Email(电子邮件)的形式互相发送信息来进行 一系列的交流.但这种异步交互的办事效率可见是很低的.为提高效率,让用户之间能达到 实时交互的目的,所以出现了可以实时交流信息的聊天室,来满足用户的需求. 1.2 开发工具和相关技术简介 1.2.1 ASP简介 Active Server Pages (ASP) 是服务器端的脚本编写环境,可用它来创建动态 Web 页或生成 功能强大的 Web 应用程序。 ASP 页是包括 HTML 标记、 文本和脚本命令的文件。 ASP 页 可调用 ActiveX 组件来执行任务,例如连接到数据库或进行商务计算。通过 ASP,可为您 的 Web 页添加交互内容或用 HTML 页构成整个 Web 应用程序,这些应用程序使用 HTML 页作为您的客户的界面。 ASP的特点: ASP 可以和 HTML 或其它脚本语言(VBScript,JavaScript)相互嵌套 ASP 是一种在 WEB 服务器端运行的脚本语言,程序代码安全保密 ASP 以对象为基础,因此可以使用 ActiveX 控件继续扩充其功能 ASP 内置 ADO 组件,因此可以轻松的存取各种数据库 ASP 可以将运行结果以 HTML 的格式传送至客户端浏览器,因而可以适用与各种浏览器 制作本聊天室 , 服务器端我们使用的是 VBScript 脚本 , 客户端我们使用功能强大的 javascript 脚本 实现 BS 交互. 1.2.2 SQL server 2000 简介 SQL Server 2000 是一个杰出的数据库平台,可用于大型联机事务处理数据仓库以及电子商 务等,特别是对 XML,HTTP 的支持,以及在 WEB ,数据仓库服务中的应用,而且存取运行速度 远远高于 Access 等小型数据库. 所以很适合用于实时性要求比较高的应用程序, 本聊天室 因为实时性要求比较高,所以使用 SQL server2000 作为数据库,以获得高效的性能. 1.2.3 JavaScript 简介 Java Script 是由 Sun 公司及网景 Netscape 公司开发的。它可以让你设计交互的网页内容,但 不能单独执行,必须在浏览器或服务器上执行。本文就是他在客户浏览器上的应用. 1.2.4 DHTML(动态 HTML) 简介 传统的 HTML 是静态的,当它被加载到浏览器后,它只像一个画面,怎么看也不会发生变 化,而动态 HTML 则意味着 Web 页面对用户有响应,即,动态 HTML 能自动变化。 1.2.5 Cookie 技术简介 Cookies 是为了弥补 HTML 的一个缺陷而产生的。 HTML 是一种无记忆的协议,也就是说用 户目前正在浏览的主页对在此之前浏览过的主页没有丝毫记忆和了解。 而实际的需要可能是 希望浏览器能够记住一些信息, 而这些信息却不希望让使用者看到, 比如说可能是一些用户 的身份信息,因此这些信息是不能以参数的形式传送的。这个需求由 HTML 本身无法解决, 于是引入了 Cookies 的概念,也就是由 WebServer 向浏览器写入一些信息,这些信息用户无 法看到,当浏览器网站的其他主页发出 GET 请求时把此 Cookies 信息也会发送过去,供该 主页使用,这样就实现了一定程度上的 HTML 的记忆能力。 本聊天室就是利用 Cookie 来存取一些用户的个人配置信息,以减轻服务器运行负担。 第 二 章 聊天室总体分析和设计 2.1 聊天室运行原理 聊天室最基本的原理就是 : 从客户端收集消息 ,然后 通过服务器端消息分发程序中转 ,将全 局消息发送给的所有用户. 其原理图如下: 用户 1 (聊天客户端 IE) 发送聊天消息 用户 2 (聊天客户端 IE) 发送聊天消息 接收全局聊天消息 接收全局聊天消息 聊天服务器 消息分发引擎 用户 3 (聊天客户端 IE) 用户 4 (聊天客户端 IE) 发送聊天消息 发送聊天消息 接收全局聊天消息 接收全局聊天消息 图(1) 2.2 聊天室的功能 聊天室支持公聊、私聊、每个用户都有代表自己的昵称,可在用户在线列表中选择聊 天对象。聊天消息中可插入表情图释,采用主动刷新机制,559559开奖结果查询一确保不会掉线。精心设计的消息 分发引擎, 在没有新信息的时候主窗口看不到刷新,尽可能的减小服务器负担。用户类型 分成:游客(性别未知) ,美女和帅哥 3 种。彩霸王全年图纸记录,且每个用户在一台电脑上只能进一个聊天室。 2.3 聊天室的页面结构设计 本聊天室分为 4 块区域,即 公聊区,私聊区,聊天面板,用户列表。采用 框架形式 的页 面结构, 以便在一个 IE 窗口中 显示多个 WEB 页面, 使之构成一个完整实用的聊天室界面。 如图所示: 图(2) 由以下几个 asp 文件组成此界面: chat.asp :由框架组成分别包含: chatboard, singlechat, userlist, controlboard 几个框架(Frame). chatboard.asp singlechat.asp controlboard.asp userlist.asp : 公聊区页面 : 私聊区页面 : 控制版 : 用户列表 2.4 聊天室的程序结构设计 本聊天室为了尽可能达到通用性, 所有将聊天室抽象成一个聊天室模块! 只要设置不同的聊 天室名字,就可以建立独立的聊天室。应用于网站时,可以由网站管理员建立,也可以让用 户自己建立。 下面介绍一下组成本聊天室的 11 个功能模块 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 聊天室的核心引擎:全局聊天消息分发引擎 用户客户端聊天信息输入与发送模块 用户客户端全局聊天信息接收与显示模块 全局聊天消息缓冲 实例聊天室列表 聊天室在线用户列表 表情图释索引表 聊天用户个人信息保存模块 聊天室显示属性个性化设置模块 登陆聊天室模块 退出聊天室模块 以下是 本聊天室的程序组成结构图: 为用户分配资源 资源 释放该用户的 登陆模块 分发信息 发送信息 发出登陆请求 发出退出请求 聊天用户个人信息保存模块 聊天室显示属性个性化设置模块 服务器端 聊天信息接收分发引擎 客户端 聊天信息输入与发送模块 全局聊天消息缓冲 实例聊天室列表 表情图释索引表 全局聊天信息接收与显示模块息保存模块 聊天室在线用户列表 局部模块 退出模块 全局模块 图(3) 2.5 数据库结构设计 本聊天室 中的 2 个模块的数据是 存放在数据库中的。1 个是 在线用户的列表模块,另一 个是实例聊天室列表模块。 2.5.1 实例聊天室列表模块 1. 2. 表名:ChatRoomlist 结构: 字段名 id 字段类型 字段字节数 int varchar varchar smalldatetime 4 varchar varchar 50 50 4 (记录唯一表示 ID) Roomname creater createtime state memo (实例聊天室名字) (聊天室的建立者) (建立时间) 10 100 (聊天室状态,包括:开启和关闭) (备注) 2.5.2 在线用户的列表模块表结构 1.表名: ChatRoomUser 2.结构 字段名 id nickname sex logintime 字段类型 int varchar varchar smalldatetime 4 字段字节数 4 50 10 (记录唯一表示 ID) (用户昵称) (用户性别) (登陆聊天室的时间) 50 (当前所在聊天室的程序内部名字) 50 (当前所在聊天室的实例名字) 50 (用户进入聊天室时所用的 IP) varchar 50 (用户进入聊天室时,服务器分配个用 RoomAppName varchar TrueRoomName JoinIP varchar varchar SessionID 户 的 SessionID(用户唯一表示 ID) ) 第 三 章 聊天室的详细设计 3.1 l 变量说明 服务器端全局变量 在 ASP 中, 全局变量是通过 Application 对象 保存的, 他从 Web 服务器 启动开始 到 关 闭之前 一直存在, 所以可以被程序共享访问 在我们的聊天室里 使用了以下这些变量 1. application(RoomAppName) (保存信息高速缓冲, RoomAppName 是一个抽象变量, 根据不同的聊天室,设置不同的高速缓冲) 2. application(RoomAppName &_MsgHeadPointer) 消息缓冲环结构中的头指针[这 里用数组下标标识] 3. application(RoomAppName &_MsgTailPointer) 消息缓冲环结构中尾指针[这里用 数组下标标识] 4. application(RoomAppName &_Msg_ID) 录唯一的递增变量 5. application(Faces) 消息缓冲中 标识消息记 ‘图释索引列表, 用于图释选择和定位 l 服务器端局部变量 ASP 里有 3 种 局部变量: 1. 页面使用的变量 2. 用户从本网站开始到离开期间使用的变量 3. 保存在 每个用户客户端的变量 ü 页面使用的变量 1. 2. 3. RoomId chatUsername UserSex : 标识聊天室的唯一 ID : 在聊天室里用的用户昵称 : 用户性别 : 用于标识各个聊天室的唯一名字, 由 字符串 ChatRoom_ 4. RoomAppName 和 RoomID 拼接而成 ü 用户从本网站开始到离开期间使用的变量 (使用 session 对象实现tents(Pass) 布尔变量,在用户退出聊天室时,用于用户的合法性判断 2. session(RoomAppName) 保存当前用户所在的聊天室唯一标识名 3. session(ChatNickName) 保存当前用户在聊天室里的昵称 4. session(UserSex) 保存当前用户的性别 ü 保存在 每个用户客户端的变量 (使用 Cookie 技术实现) 1. response.Cookies(RoomAppName)(ChatNickName) 当前用户在聊天室里的昵称 2. response.Cookies(RoomAppName)(ChatRoomTrueName) 当前用户所在的聊天室真正的名字(可以重复) 3. response.Cookies(RoomAppName)(ChatRoomAppName) 当前用户所在的聊天室唯一标识名 4. response.Cookies(RoomAppName)(MsgLastLinePointer) 标识用户从消息缓冲中 接收的最后一条信息的 消息 id, 用于判断用户客户端消息的更新 l 客户端局部变量 本聊天室 在客户端 使用了一些变量来 保存和判别 每个用户在聊天室中的个性化设置 和 聊天信息的接收和显示(都是 javascript 在客户断定义的变量和数组) 1. FontBold : 聊天内容显示字体是否为粗体 2. 3. 4. 5. 6. 7. 8. FontItalic PrivateChat SpliteScreen ScrollSreen FrontColor BackColor selfname : 聊天内容显示字体是否为斜体 : 聊天模式是否为私聊模式 : 聊天内容显示方式是否分屏 : 聊天内容显示时是否自动滚屏 : 聊天内容显示字体的前景色 : 聊天内容显示字体的背景色 : 用户自己的昵称 9. 10. 11. 12. TalkerArray TalkToArray MsgArray SaytimeArray : 接收更新消息时 保存说线 维数组 : 接收更新消息时 保存说线 维数组 : 接收更新消息时 聊天内容字段的 1 维数组 : 接收更新消息时 说线. 系统常数 RoomMaxUser MaxMsgLines MaxMsgColumn MaxFaces FacePath : 每个聊天室的最大用户数 : 消息高速缓冲数组矩阵的最大行数, : 消息高速缓冲数组矩阵的最大列数 : 图释列表的 最大图释个数 : 图释文件的相对存放路径 3.2 聊天室的核心引擎(全局聊天消息分发引擎)设计 首先, 我们介绍一下使聊天室正常运转的核心引擎―――全局聊天消息分发引擎。 他就像人 的心脏运送血液那样, 在聊天系统中运送着用户的信息,使整个聊天交互过程得以正常运转。 l 功能说明:接收用户发送到服务器的聊天信息,向用户发送在聊天室中参与聊天 的所有用户的全局聊天信息。 l 接收发送模式:客户端主动模式 l 引擎组成构造: 本引擎由 2 个 asp 脚本文件: 接收数据脚本文件(receivedengine.asp)和发送数据脚本文件(Refreshengine.asp) 再通过 一个 全局信息高速缓冲 做为共享数据区 , 实现从客户端获取个人消息并发送全局 消息。 l 引擎原理图 全局消息高速缓冲 信息 1 信息 2 信息 3 . . . 用户 用户 数据接收接 口 数据发送接 口 用户 用户 图(4) l 核心算法与重点代码的设计 u 全局信息高速缓冲的实现 我们用一个二维数组 构成一张二维表, 缓冲聊天内容, 其行 存储某一用户对另一个用户的 一条聊天记录 ,其列存储 记录中的各个字段. 其表结构如下: 高速缓冲二维表 标识记录唯一 ID 说话者 说话对象 聊天内容 说线 YY KK 你好 2004-05-28 Off(公聊) … … … …. … … 在这里我们使用 循环列队(环)这种数据结构形式实现高速缓冲的运转(如图 5 所示), 此线性表首尾相接 , 由 2 个指针互相协调控制 , 一个称为 front( 列队头 , 在这里我们使用 Headpointer 标识),另一个称为 rear(列队尾, 在这里我们使用 Tailpointer 标识) ; 图 5 (循环列队) a:初始状态 b:添加数据 c:删除数据 其控制变量有: MsgHeadPointer 、MsgTailPointer、Msg_ID(变量说明见 3.1) 其操作包括: 1. 创建一个空的缓冲 CreateCache(MaxLines , MaxColumn , RoomAppName) 2. 初始化一个缓冲 Init_Cache(cache , MaxLines , MaxColumn , RoomAppName) 3. 如果缓冲为空,则返回 TRUE,否则返回 FALSE Cache _Is_Empty(cache , RoomAppName) 4. 向队列中添加一条聊天记录 AddToCache(cache , MaxLines , RoomAppName , Talker, TalkTo , Msg , ChatMethod) 5. 获取缓冲中新的全局聊天消息 GetNewestMsg(cache , MaxLines , RoomAppName ) 具体函数程序,请参考附录! 由于高速缓冲在整个聊天系统运行中是非常重要的共享数据区 ,所以我 们使用 Application 对象保存高速缓冲数组. u 数据接收实现 数据接收模块, 接收用户从客户端通过表单提交上来的聊天信息, 然后把他添加进高速缓冲. 主要利用 ASP 的 Request 对象截获表单数据,具体程序如下: ‘用户输入聊天内容 并发送到服务器端 略………在 3.3 详细介绍 ‘-获取用户提交上来的信息 RoomAppName = request(RoomAppName) ‘发送到目的聊天室的唯一标识名 Talker TalkTo Msg = request(Talker) = request(TalkTo) ‘说话者 ‘说话对象 = Server.HTMLEncode(request(chatmsgbox)) ‘聊天内容 ChatMethod = request(private) 公聊=off 或 私聊=on ‘加入当前用户信息到高速缓冲(MaxLines 是系统常数 参考 3.1) 1. AddToCache(cache , MaxLines , RoomAppName , Talker, TalkTo , Msg , ChatMethod) u 数据发送实现 数据发送模块, 由客户端浏览器每隔 5 秒钟, 主动刷新服务器端的数据发送页面, 发送程序 把当前用户的所需的全局聊天信息从高速缓冲中取出并发送给客户端. 主要应用了 ASP 的 Request 和 Cookie 技术获取 当前用户的在聊天室中的系统状态信息 , 来判断发送的信息 内容, 应用 Application 对象从高速缓冲中读取信息.具体程序如下: RoomAppName = request(RoomName) ‘获取更新信息的目的聊天室的唯一标识名 -----------------获取用户信息(变量说明请参考 3.1)----------------------- ChatNickName ChatRoomTrueName ChatRoomAppName MsgLastLinePos = request.Cookies(RoomAppName)(ChatNickName) = request.Cookies(RoomAppName)(ChatRoomTrueName) = request.Cookies(RoomAppName)(ChatRoomAppName) = CLng(request.Cookies(RoomAppName)(MsgLastLinePointer)) -------------------------------------------------------------------------------- ‘发送数据给 客户端 ’获得程序生成的 需更新记录的 javascript 消息数组 TheNewstMsg GetNewestMsg(application(RoomAppName),MaxMsgLines,RoomAppName ) = ‘显示新的全局聊天信息到客户端 略………在 3.4 详细介绍 3.3 用户客户端聊天信息输入与发送模块设计 l 功能说明: 此模块用于 用户输入聊天内容,并发送到聊天室里, 即实现在聊天室中 发言的功能 l 操作流程图: 用户输入聊天内容 按回车键 或者 发送按钮 客户端发送程序 验证内容并提交到服务器端程序 服务器端 接收提交信息并处理 l 代码的设计: 3.4 用户客户端全局聊天信息接收与显示模块设计 3.5 全局聊天消息高速缓冲 3.6 3.7 3.8 3.9 3.10 3.10.1 3.10.1 3.10.1 3.10.1 3.10.1 3.10.1 3.11 3.12 实例聊天室列表 聊天室在线用户列表 表情图释索引表 聊天用户个人信息保存模块 聊天室显示面板属性个性化设置模块 聊天对象选择功能 聊天者名字修改功能 公聊私聊模式切换功能 文字背景色前景色设置功能 聊天面板屏幕显示字体设置 自动滚屏设置功能 登陆聊天室模块 退出聊天室模块 本 文 来 自 CSDN 博 客 , 转 载 请 标 明 出 处 :


白小姐网报| 中道人玄机图资料| 神算子福彩3d心水论坛| 最快手机开奖现场直播| 彩霸王综合资料第三份| 2018年生肖歇后语1155期| 六台盒宝典开奖结果今晚 - 百度| 香港内部精准免费资料| 诸葛亮六和军师| 百乐门全讯网|