基于asp聊天室设计与实现内容摘要:

eb 服务器启动开始到关闭之前一直存在 , 所以可以被程 序共享访问 . 在我们的聊天室里使用了以下这些变量 : application(RoomAppName) (保存信息高速缓冲 , RoomAppName 是一个抽象变量 ,根据不同的聊天室 ,设置不同的高速缓冲 ) application(RoomAppName amp。 _MsgHeadPointer) 39。 消息缓冲环结构中的头指针[这里用数组下标标识 ] application(RoomAppName amp。 _MsgTailPointer) 39。 消息缓冲环结构中尾指针 [这里用数组下标标识 ] application(RoomAppName amp。 _Msg_ID) 39。 消息缓冲中 标识消息记录唯一的递增变量 application(Faces) 39。 图释索引列表 , 用于图释选择和定位 服务器端局部变量 ASP 里有 3 种 局部变量 : 1. 页面使用的变量 2. 用户从本网站开始到离开期间使用的变量 3. 保存在 每个用户客户端的变量 页面使用的变量 RoomId : 标识聊天室的唯一 ID chatUsername : 在聊天室里用的用户昵称 UserSex : 用户性别 RoomAppName : 用于标识各个聊 天室的唯一名字 , 由 字符串 ChatRoom_ 和 RoomID 拼接而成 用户从本网站开始到离开期间使用的变量 (使用 session 对象实现 ) (Pass) 布尔变量 ,在用户退出聊天室时 ,用于用户的合法性判断 session(RoomAppName) 保存当前用户所在的聊天室唯一标识名 session(ChatNickName) 保存当前用户在聊天室里的昵称 session(UserSex) 保存当前用户的性别 保存在 每个用户客户端的变量 (使用 Cookie 技术实现 ) (RoomAppName)(ChatNickName) 基于 ASP 聊天室设计与实现 10 当前用户在聊天室里的昵称 (RoomAppName)(ChatRoomTrueName) 当前用户所在的聊天室真正的名字 (可以重复 ) (RoomAppName)(ChatRoomAppName) 当前用户所在的聊天室唯一标识名 (RoomAppName)(MsgLastLinePointer) 标识用户从消息缓冲中接收的最后一条信息的消息 id, 用于判断用户客户端消息的更新 客户端局部变量 本聊天室在客户端使用了一些变量来保存和判别每个用户在聊天室中的个性化设置和聊天信息的接收和显示 (都是 javascript 在客户断定义的变量和数组 ) FontBold : 聊天内容显示字体是否为粗体 FontItalic : 聊天内容显示字体是否为斜体 PrivateChat : 聊天模式是否为私聊模式 SpliteScreen : 聊天内容显示方式是否分屏 ScrollSreen : 聊天内容显示时是否自动滚屏 FrontColor : 聊天内容显示字体的前景色 BackColor : 聊天内容显示字体的背景色 selfname : 用户自己的昵称 TalkerArray : 接收更新消息时 保存说话者字段的 1维数组 TalkToArray : 接收更新消息时 保存说话对象字段的 1 维数组 MsgArray : 接收更新消息时 聊天内容字段的 1维数组 SaytimeArray : 接收更新消息时 说话时间字段的 1维数组系统常数 RoomMaxUser : 每个聊天室的最大用户数 MaxMsgLines : 消息高速缓冲数组矩阵的最大行数 MaxMsgColumn : 消息高速缓冲数组矩阵的最大列数 MaxFaces : 图释列表的 最大图释个数 FacePath : 图释文件的相对存放路径 聊天 室的核心引擎 (全局聊天消息分发引擎 )设计 首先 ,我们介绍一下使聊天室正常运转的核心引擎 ――― 全局聊天消息分发引擎 .他就像人的心脏运送血液那样 ,在聊天系统中运送着用户的信息 ,使整个聊天交互过程得以正常运转 . 功能说明 :接收用户发送到服务器的聊天信息 ,向用户发送在聊天室中参与聊天的所有用户的全 局聊天信息 . 接收发送模式 :客户端主动模式 引擎组成构造 : 本引擎由 2个 asp 脚本文件 : 接 收 数 据 脚 本 文 件 () 和 发 送 数 据 脚 本 文 件() 再通过 一个 全局信息高速缓冲 做为共享数据区 ,实现从客户端获取个人消息并发送全局消息 . 基于 ASP 聊天室设计与实现 11 核心 算法 与重点代码的设计 全局信息高速缓冲的实现 我们用一个二维数组 构成一张二维表 , 缓冲聊天内容 , 其行存储某一用户对另一个用户的一条聊天记录 ,其列存储记录中的各个字段 . 其表结构如下 : 高 速缓冲二维表 标识记录唯一 ID 说话者 说话对象 聊天内容 说话的时间 聊天方式 1 XX OO Hi 20200517 On(私聊 ) 2 YY KK 你好 20200518 Off(公聊 ) 在这里我们使用 循环列队 (环 )这种数据结构形式实现高速缓冲的运转 ,此线性表首尾相接 ,由 2 个指针互相协调控制 , 一个称为 front(列队头 ,在这里我们使用 Headpointer 标识 ),另一个称为 rear(列队尾 , 在这里我们使用 Tailpointer 标识 )。 a:初 始状态 b:添加数据 c:删除数据 其控制变量有 : MsgHeadPointer ,MsgTailPointer,Msg_ID(变量说明见 ) 其操作包括 : 创建一个空的缓冲 CreateCache(MaxLines , MaxColumn , RoomAppName) 初始化一个缓冲 Init_Cache(cache , MaxLines , MaxColumn , RoomAppName) 如果缓冲为空 ,则返回 TRUE,否则返回 FALSE Cache _Is_Empty(cache , RoomAppName) 向队列中添加一条聊天记录 AddToCache(cache , MaxLines , RoomAppName , Talker, TalkTo , Msg , ChatMethod) 获取缓冲中新的全局聊天消息 GetNewestMsg(cache , MaxLines , RoomAppName ) 具体函数程序 ,请参考附录 ! 由于高速缓冲在整个聊天系统运行中是非常重要的共享数据区 ,所以我们使用Application 对象保存高速缓冲数组 . 数据接收实现 数据接收模块 , 接 收用户从客户端通过表单提交上来的聊天信息 , 然后把他添加进高速缓冲 . 主要利用 ASP 的 Request 对象截获表单数据 ,具体程序如下 : 基于 ASP 聊天室设计与实现 12 用户输入聊天内容 并发送到服务器端 获取用户提交上来的信息 RoomAppName = request(RoomAppName) 39。 发送到目的聊天室的唯一标识名 Talker = request(Talker) 39。 说话者 TalkTo = request(TalkTo) 39。 说话对象 Msg = (request(chatmsgbox)) 39。 聊天内容 ChatMethod = request(private) 39。 公聊 =off 或 私聊 =on 39。 加入当前用户信息到高速缓冲 (MaxLines 是系统常数 参考 ) AddToCache(cache , MaxLines , RoomAppName , Talker, TalkTo , Msg , ChatMethod) 数据发送实现 数据发送模块 ,由客户端浏览器每隔 5 秒钟 , 主动刷新服务器端的数据发送页面 , 发送程序把当前用户的所需的全局聊天信息从高速缓冲中取出并发送给客户端 .主要应用了 ASP 的 Request 和 Cookie 技术获取 当前用户的在聊天室中的系统状态信息 , 来判断发送的信息内容 , 应用 Application 对象从高速缓冲中读取信息 .具体程序如下 : RoomAppName = request(RoomName) 39。 获取更新信息的目的聊天室的唯一标识名。 ChatNickName = (RoomAppName)(ChatNickName) ChatRoomTrueName = (RoomAppName)(ChatRoomTrueName) ChatRoomAppName = (RoomAppName)(ChatRoomAppName) MsgLast。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。