毕业设计课题意义
作为计算机专业的学生,即时了解和掌握流行的即时通讯机制并且应用到实践过程中,将极大的提高自己的设计和开发软件的积极性;提升自己的理论和技术水平,跟踪国内外最新的技术和开发模式,为以后类似的开发积累经验;同时,开发出来的作品也可以真正运用到实际当中,方便大家的沟通和交流。
2.3 应解决的问题
1) 服务系统模型的选择;
2) 实时查看在线好友列表;
3) 向在线好友发送即时消息;
4) 实时接收在线消息并且弹出提示;
5) 状态的即使切换(在线,隐身等)。
2.4 需要实现的功能
1) 实现用户注册、登录、退出、更改状态等功能;
2) 实现文本信息发送;
3) 实现搜索好友,添加好友,删除好友技术;
4) 实现消息的提示功能;
5) 实现设置好友权限功能。
需求分析
3.1 即时消息的一般需求
1) 一般即时消息格式需求:
①所有实体必须至少使用一种消息格式;
②一般即时消息格式必须定义发信者和即时收件箱的标识;
③一般即时消息格式必须包含一个让接收者可以回消息的地址;
④一般即时消息格式应该包含其他通讯方法和联系地址,例如电话号码,邮件地;
⑤一般即时信息格式必须允许对信息有效负载的编码和鉴别(非ASCII内容);
⑥一般即时信息格式必须反映当前最好的国际化实践;
⑦一般即时信息格式必须反映当前最好的可用性实践;
⑧必须存在方法,在扩展一般即时消息格式的时候,不影响原有的域;
⑨必须提供扩展和注册即时消息格式的模式的机制。
2) 可靠性需求
协议必须存在机制,保证即时消息成功投递或者投递失败的时候,发信者获得足够的信息。
3) 性能需求
①即时消息的传输必须足够的迅速;
②即时消息的内容必须足够丰富;
③即时消息的长度尽量足够的长。
3.2 即时通讯系统需求
1) 注册需求
①即时通讯系统允许多个用户注册;
②一个用户可以注册多个ID;
③注册所使用的帐号类型为数字或者字母;
④注册新用户时必须填写符合要求的信息。
2) 通讯需求
①用户可以传输文本消息;
②用户的消息可以中转至服务器;
③用户可以从服务器获取中转的好友消息;
3) 好友管理需求
①用户可以查询好友;
②用户可以添加好友;
③用户可以添加多个人为好友,一个用户可以被多个人添加为好友
④用户可以删除好友;
⑤用户可以将好友放在多个组中;
⑤用户的好友一次只能属于一个组。
4) 状态切换需求
①用户可以选择登录状态;
②登录完成后用户可以切换状态(在线,隐身);
③用户可以注销登录。
5) 查看在线好友需求
①用户登录时列出所有在线好友;
②用户可以看到新近登录的好友;
③用户将不在看到临时登出的好友。
4 系统设计
4.1 方案论证
4.1.1 “即时”技术的选择
聊天系统实现的关键在于其实时的特性,包括状态的实时改变,消息的实时收发,状态的实时切换等,而传统的Web应用采用同步交互过程,这种情况下,用户首先向Web服务器发送一个请求,然后Web服务器根据用户请求的内容,执行相应的任务,并向用户返回结果。这是一种不连贯的用户体验,在服务器处理请求时,用户只能等待,此时浏览器显示的页面是空白的,这也就是通常所说的“白屏”现象,应用此种技术肯定实现不了即时通讯所要求的效果。所以就需要寻求一种新的技术来实现本系统所要求的即时的效果,而Ajax恰好弥补了Web应用的这一缺点。
与传统的Web应用不同,Ajax采用了异步交互的方式。它在用户和服务器之间引入了一个中间媒介,从而改变了同步交互过程中的“处理-等待-处理-等待”模式。用户的浏览器在执行任务时即装载了Ajax引擎。该引擎是用JavaScript语言编写的,通常位于一个隐藏的框架中,负责转发用户界面和服务器之间的交互。Ajax引擎允许用户和应用系统之间的交互以异步的方式进行,独立于用户与Web服务器之间的交互。现在,可以通过Ajax引擎向Web服务器发送请求。所以本系统决定采用Ajax来实现即时通讯各个部分“即时”效果的实现。
使用Ajax可以带来的好处有以下几个方面:
1.减轻服务器的负担。Ajax的原则是“按需取数据”,可以最大程度地减少冗余请求,减轻服务器的负担。
2.无需刷新页面,减少用户心理和实际的等待时间。特别是在读取大量数据时,不会像刷新页面那样出现白屏的情况,Ajax使用XMLHttpRequest对象发送请求并且得到服务器响应,在不重新载入整个页面的情况下,用JavaScript操作DOM更新页面。因此在读取数据的过程中,用户所面对的不是白屏,是原来的页面内容,只有在数据接收完毕后才更新相应部分的内容。这种更新是瞬间的,用户几乎感觉不到。
3.带来更好的用户体验。
4.可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器负担,充分利用宽带资源,节约空间和宽带租用成本。
5.可以调用外部数据。
6.基于标准化的并广泛支持的技术,不需要下载插件或者小程序。
7.进一步促进页面呈现与数据的分离。