



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Socket聊天室基本原理是,抛开OGI和WWW服务器,根据HTML规范,接收到浏览器的请求以后,模仿WWW服务器的响应,将聊天内容发回浏览器。在浏览器看来就像浏览一个巨大的页面一样始终处于页面联接状态, 这就是一个专门的聊天服务器,一个简化了的WWW服务器。 -这样相比CGI方式来说,Socket聊天室的优点就很明显: 1. 不需要专门的WWW服务器,在聊天服务器里完成必要的工作,避开耗时的CGI 过程。 2. 如果使用单进程服务器,就不需要每次产生新进程。 3. 数据交换完全在内存中进行,不用读写文件。 4. 不需要定时刷新,减少屏幕的闪烁,减少对服务器的请求次数。 -下面我们来看看具体实现流程。 一、 聊天服务器实现流程 -下图是服务器程序流程: -上图中的“处理用户输入”部分可以细化为下图: -用户数据输入都是通过URL传送,下面是几个URL实例,结合后面客户端流程,可以更好地理解系统结构。 -这是一个用户名密码均为aaa的聊天用户登录系统,说了一句话“hello”,然后退出所产生的一系列请求,其中密码用系统函数crypt加密过: /login?name=aaapasswd=PjHIIEleipsEE /chat?sid=ZUyPHh3TWhENKsICnjOvpasswd=PjHIIEleipsEE /talk?sid=ZUyPHh3TWhENKsICnjOvpasswd=PjHIIEleipsEE /names?sid=ZUyPHh3TWhENKsICnjOv/doTalk?sid=ZUyPHh3TWhENKsICnjOv passwd=PjHIIEleipsEEmessage=hello /leave?sid=ZUyPHh3TWhENKsICnjOvpasswd=PjHIIEleipsEE二、 客户端具体登录过程 - 我们先看看聊天界面: 聊天界面由三个frame组成,其中chat帧是聊天内容显示部分,talk帧是用户输入部分,包括聊天内容输入、动作、过滤以及管理功能都在这一帧输入,names是在线名单显示部分,这一部分是定时刷新的。 - 让我们从浏览器的角度来看看进入聊天室的过程。 - 1.首先浏览器请求页面: - http:/host:9148/login?name=NAMEpasswd=PWD - 此时产生了一个连接到服务器聊天端口的Socket联接,并发送了一行数据: - GET /login?name=NAMEpasswd=PWD HTTP/1.1 -2.服务器生成一个session ID,验证密码以后,发回: HTTP/1.1 200 OK ContentTYPE: text/html -然后服务器关闭Socket联接。 -3.浏览器收到以上html文件后,将会依次打开三个联接(其中的sid和encrypt_pass是变量): /chat?sid=sidpasswd=encrypt_pass /talk?sid=sidpasswd=encrypt_pass /names?sid=sid-这三个联接中的第一个联接chat在整个聊天过程中都是保持联接的,这样从浏览器角度来看,就是一个始终下载不完的大页面,显示效果上就是聊天内容不是靠刷新来更新,而是不断地向上滚动。通过察看html代码可以看到,只有,然后就是不断增加的聊天内容,没有。 - 另外两个联接在页面发送完毕以后,Socket就关闭了。 - 这样一次登录聊天室实际上有四次Socket联接,但登录完成以后,只有chat帧的Socket是保持联接的,用于接收来自服务器的聊天信息,这是 Socket聊天室的关键所在。 -在服务器端储存了所有参加聊天的客户的chat Socket,当有人发言时,服务器就向所有chat Socket发送聊天内容。 - Talk与names帧的html实际上和普通的form是一样的。 - 4.在用户登录以后,服务器端保存了一张包括用户信息的表格: - 在perl实现中,我们使用哈希结构储存信息,以session ID 作为key索引。这样的存储结构便于存取数据,回收空间。每个客户信息是一个数组: socket,name,passwd,privilige,filter,login_time,color socket:储存chat帧socket联接 name:用户名 passwd:密码 privilige:权限 filter:某个用户的过滤列表的引用(reference) login_time:记录登录时间,以便以后清除一些超时联接 color:用户聊天颜色-以上用户数据大部分是在login阶段,用户通过密码验证以后填入的。只有chat Socket要等到chat帧显示以后才得到。如果超过一定时间,Socket 还是没有填入,说明浏览器取得主框架以后连接中断了,这时候就需要删除该用户数据。 - 以上是聊天室核心部分,其他部分,如用户注册、改密码等可以沿用CGI聊天室代码。 三、 需要改进的地方 - 目前提供了聊天、悄悄话、动作这些基本聊天功能以及过滤用户名单这样的附加功能。管理功能完成了踢人、查IP、任命室主。今后需要改进的地方有: -稳定性:目前聊天室还没有经过大用户量测试,稳定性还不能充分保证。由于是单
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江西银行高级专业人才招聘4人考前自测高频考点模拟试题及答案详解(名校卷)
- 2025福建省船舶工业集团有限公司招聘5人考前自测高频考点模拟试题及答案详解(典优)
- IG4-生命科学试剂-MCE
- 2025年电容剪脚机项目建议书
- Gyromitrin-生命科学试剂-MCE
- 2025河南洛阳市宜阳县选聘县属国有集团公司部长10人模拟试卷及答案详解一套
- 2025广东省蕉岭县招聘卫生类急需紧缺人才5人考前自测高频考点模拟试题及完整答案详解1套
- 2025年移动通讯用数字程控交换机合作协议书
- 2025安徽芜湖市鸠江区招聘区属国有企业领导人员拟聘用人员模拟试卷附答案详解(黄金题型)
- 进口合同书范本
- GB/T 46239.1-2025物流企业数字化第1部分:通用要求
- 2025年核电池行业研究报告及未来发展趋势预测
- 2025重庆机场集团有限公司社会招聘150人(第二次)考试参考题库及答案解析
- 2025年汽车制造业供应链风险管理案例分析报告
- 社区精神障碍工作总结
- 2025北京房山区区直部门和乡镇(街道)全日制临聘人员招聘37人考试参考题库及答案解析
- 技术方案评审与验收标准模板
- 镀膜车间安全培训课件
- 中水资源化综合利用建设项目规划设计方案
- 政府采购管理 课件 第十三章 政府采购绩效评价
- 机场安检危险品运输课件
评论
0/150
提交评论