【即时通讯软件的设计与实现8800字(论文)】_第1页
【即时通讯软件的设计与实现8800字(论文)】_第2页
【即时通讯软件的设计与实现8800字(论文)】_第3页
【即时通讯软件的设计与实现8800字(论文)】_第4页
【即时通讯软件的设计与实现8800字(论文)】_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

即时通讯软件的设计与实现摘要即时通讯系统是用户可以即时交流的系统,即时交流不仅仅是单纯的文字交流,还可以进行即时的文件传输。该文简单的了解了一些之前常用的WEB应用的开发方案和开发过程,并对这些常用的开发方案进行了分析和概况。在对HTML5中新的通信协议WebSocket协议进行分析之后,提出了一种使用MySQL数据库和Java语言开发即时通讯系统的新方案,该通讯系统的开发方案相较之前的一些WEB应用的开发方案有许多改进和完善之处,目的是为了高效的利用服务器和给用户带来更好的体验。关键字:即时通讯;WebSocket;MYSQL;HTML5目录TOC\o"1-2"\h\u1引言 1引言1.1开发背景和开发意义

随着如今科技的迅速发展,网络通信已经成为新时代人们交流的主要途径之一,即时通讯系统在人们日常生活之中已经随处可见。即时通讯系统是一个服务系统,目的是为人们的即时交流产生便利,不再一定依赖打电话的方式进行信息交流,同时可以允许多人在网络上进行即时的文字信息、文件、音频等传输。该系统的开发顺应着时代的潮流,在信息时代必定会大放异彩。从现在的用户使用情况来看,主流的即时通讯软件大概是以下几种:国外的Skype、Facebook、Twitter;国内的QQ、微信等。如今的社会是信息社会,而处于信息社会的人们就更愿意信息技术来进行信息的传输,即时通讯系统的开发需求就大大提高了,信息传递的快速性和安全性也越来越受到重视,这些新开发的即时通讯系统或者软件中,有一些优秀的案例被许多用户喜欢和使用,在国内,腾讯科技的软件:腾讯QQ和WeChat就是成功案例之一,它们使用起来非常简便,适合各个年龄阶段的受众,而且功能非常完善,不仅可以满足用户的基础需求,还为用户提供了许多其他便于生活的功能,例如打车,预交电费等等。所以如今的即时通讯系统丰富了用户的日常生活,在一定程度上满足了自身的利益需求同时,也为人们在日常生活工作中带来了极大的便利。1.2国内外研究现状国内研究现状大部分都为实证研究。在中国对于即时通讯系统的研究成果已经有了大量的成果。唐弢(2019)[1]对于校园里即时通讯的方便快捷进行了研究,宋希香(2020)[5]对于第三代的校园即时通讯工具进行了研究。傅瑶(2015)[14]对于JAVA实现的即时通讯系统进行了研究,徐曙民、张伟(2015)[8]对于JAVA中即时通讯的内容进行了扩展研究。穆传鑫(2019)[12]对于用XMPP协议加密的即时通讯系统进行了大量研究。郝复兴(2018)[9]在移动端领域的即时通讯系统也进行了设计和研究。所以说国内的研究状况已经是非常成熟了。而在国外,也有着许多研究人员致力于即时通讯系统或者加密模式的研究。1.3本文研究思路与结构本文的研究思路是:先分析之前传统的通讯系统的设计方案,然后分析本文应用的通讯系统设计方案,比较两者直接的区别和优缺点,再根据需求分析对即时通讯系统的功能进行分析,然后对其中所需要的数据进行分析,最终完成系统的设计。文本总共分为七个章节;第一章节主要介绍了该课题的研究意义目的和背景,同时介绍了如今即时通讯系统的使用现状;第二章节主要介绍了即时通讯系统的相关研究;第三章节主要介绍了系统的分析,包括功能性需求分析和非功能性需求分析等;第四章节详细介绍了数据库是怎么设计的;第五章节描述了如何去实现系统以及实现的情况;第六章节是介绍了对该系统的测试过程和测试结果,以及系统完成的进度;第七章节是讲述了对于该系统的总结和对未来的展望。2即时通讯系统的相关研究2.1传统实时Web应用解决方案以及存在的问题杨泽东(2013)[3]在网络传输和可视化研究中说了轮询的实现方式是在即时的Web应用刚出现时最简单的方式。那什么是轮询呢?轮询是客户端按照一个固定的时间间隔去请求服务器来刷新自己的页面信息;但是不管服务器有没有更新出新的数据,客户端都会一直发送请求,这样的行为无疑会给服务器造成很大的压力,所以这种方案慢慢的就被遗弃,之后衍生出了用Ajax的长轮询方式开发和用Iframe的流方式开发的这两种方式。这两种方式都不同于之前普通的轮询方式,都在其基础上有了一些修正和新技术的开发,弥补了很多一般轮询功能的缺陷。(1)用Ajax的长轮询方式开发的Web系统:Ajax是一种异步的JavaScript和XML。它不是什么新的编程语言,而是一种使用现在所用标准的新的方法,利用Ajax方法,客户端可以以异步的方式向服务器发送HTTP请求,在不需要重新加载入面的情况下完成与服务器数据的交换,一般的SPA(单页面)应用大部分用的就是这种方式。这种方式可以保证客户端不用经常去刷新自己的界面就可以完成数据的传输。(2)用Iframe的流方式开发的Web系统:Iframe是HTML提供的一种标签,利用Iframe可以在HTML页面中创建一个内联的文档框架,该标签的SRC属性用来设置该内联框架需要显示的文档的URL。在当前拥有Iframe元素的界面开始进行载入显示时,Iframe会通过SRC属性设置的URL获取文档内容并显示。这两种方案在实现方式上存在一些不同:(1)两种方案的服务器在给客户端传输数据时,它们的数据类型是不同的,对于更新页面内容的方法也是不一样的。用第二种方式时,它的服务器端返回的是JS代码,并且这个JS代码里是有着更新的数据的,而它的客户端浏览器利用这些JS代码就可以完成页面的更新;用第一种方式时,它的服务器端返回的是XML或者JSON格式的数据,不同于客户端浏览器的JS引擎去解析JS代码,而是它首先需要去解析这些XML或者JSON格式的数据,然后才能完成页面的更新。(2)在用第二种方式时,服务器在进行连接时会一直保持这个状态,而且这个状态也会一直进行更新,然后反馈给客户端让其进行更新。而基于Ajax的长轮询则会在每次返回数据给客户端后关闭连接,再由客户端重新发起请求建立连接。而传统的两种解决方案虽然被广泛应用,但是也都还存在着一些问题。第二种方案中,因为Iframe里面一直保持着连接,浏览器会一直处于界面加载的过程之中,无法成功加载完毕,界面就一直不显示完全,用户的体验感就会被弱化。而在第一种方案中,如果服务器端更新数据的效率比较高的时候,长轮询方式就会变成为一般的轮询方式,这样它的处理性能效率就会被大大减少,并且服务器端在处理时会受到非常大的压力。除了上述的问题之外,这两种方案也还存在着一些缺陷:(1)以上两个方案在进行TCP连接的时候,都会造成资源的浪费和损耗,所以在资源利用方面还是存在不足。其次是在TCP连接过程中产生的新数据不能第一时间上传到客户端上,而客户端就会因此丢失数据。(2)HTTP请求和应答时,全部的HTTP头信息都会被携带进去,这样无形有形中就会增大每次进行更新时的数据量,从而浪费了网络宽带。(3)以上两种方案对于是否是即时的信息并没有分别能力,进行请求时都是用的同一种方式,服务器端的响应方式也相同,但是过于频繁的去请求即时消息时,会给服务器带来很大的压力,这样就会导致服务器处理能力下降,进而可能导致不是即时的消息的获取失败。2.2基于WebSocket协议的解决方案赵晗(2014)[10]指出了WebSocket是HTML5标准中提出的一种新的协议,它支持浏览器与服务器的双向通信。和HTTP协议不同的是,它在进行即时通讯时,不会对客户端或者服务器产生身份的区别,而是以同等的身份进行即时通讯。WebSocket协议本质上是一个基于TCP的协议,WebSocket连接与TCP连接的建立过程相似,都是由浏览器向服务器发送连接的请求,只不过浏览器是通过JS进行工作。在服务器解析完JS的XML发来的请求后,就会把一个完成信号传输给客户端,然后就进行连接的建立;连接建立完成之后,用户就可以用TCP连接进行数据的交换,此时并不存在服务器端和客户端的区别。WebSocket协议的数据传输格式比起HTTP协议来说更加洁简。在用该协议传输数据时,几乎将请求头消息占用的资源变为0,这样就会极大的减少需要消耗的资源,从而替服务器减轻压力,增加工作效率。因为用了常用的通信协议,所以之前那些方案开发的Web系统都或多或少存在着一些问题,例如资源的浪费、连接的不稳定性、协议的复杂程度等都是影响Web系统的主要原因;并且还有最重要的一部分就是旧的Web系统的更新都是整个页面进行更新,但是用户并不需要更新整个页面,而是只需要更新发生信息传输的部分,所以相对于WebSocket协议开发的即时通讯系统来说用户体验就稍微有一些欠缺。WebSocket协议开发的即时通讯系统有以下几个优势:WebSocket协议开发的即时通讯系统的服务器结构更加清楚。它可以分出两个单独的模块,降低系统的粘合性,并且两者不会相互影响,可以在最大限度的发挥各自的功能,并且便于各自模块的优化和更新。并且该方案用了WebSocket协议来实现即时的服务,而WebSocket协议在进行TCP连接时又更稳定,所以该方案可以对传输数据的稳定和即时带来更大的安全性,更能给用户带来全新的体验感。2.3MySQL数据库应用技术该系统开发使用的是MySQL数据库,利用MySQL数据库的应用技术对数据进行管理。2.4HTML超文本标记语言新标准HTML5HTML5是HTML超文本标记语言的新的标准,它与HTML几乎没有什么区别,但是它已经不是SGML的子集了,它移除了一些HTML里没有具体含义的标签,例如一些纯表现的元素:basefont、big、font等;也增加了一些新的特性,例如:用于绘画的元素canvas、用于媒介回放的元素video和audio、语义化更好的内容元素nav、header等。2.5开发环境本系统使用IntelliJIDEA作为开发工具,采用MAVEN框架管理项目的依赖jar包。Web项目MVC结构,服务器使用的是MySQL作为数据库。3系统分析3.1可行性分析可行性分析法是对系统进行经济上,技术上,法律上的能否实施的分析。目的是通过对技术的流行程度、对经济的利用程度和对法律的遵守行为来进行系统的论证。如何选择用最小的人力物力资源的消耗来获得最佳最优的开发方案,是可行性分析的重中之重。1.技术可行性 信息技术的高速发展,让即时通讯系统的开发变得更加方便快捷,而且,在该系统开发之前已经拥有了较多的成功案例,因此开发门槛相对来说较平常,获取成功案例也是较为容易,所以有这些经验技术在,开发成功是完全能够到达的。2.经济可行性在资源消耗方面,经济的资源可以说是微乎其微,维持系统的开发也是轻而易举。并且如果系统开发成功,它是具有一定的经济价值的,而且对于初学者更多的是带来经验的累积,对于以后的发展是有利的,所以在经济可行性方面是完全可行的。3.法律可行性该系统是进行毕业设计的实现,不会用于商业中,不会触犯相关法律,也不会对其他人的利益造成损害,在法律范围内是允许的。3.2功能性需求分析功能需求是软件系统的一项最核心的需求。该系统主要使用角色一共有三种,分别为:普通用户、普通管理员和顶级管理员。通过对普通用户和普通管理员的功能分析,系统的功能主要有注册功能、登录功能、收发消息文件功能、搜索添加删除好友功能,创建群聊、管理用户和监控聊天等功能。普通用户功能:注册功能:用户可以注册多个账号,完善相应的注册信息,然后获取登录账号。登录功能:用户用注册获取的账号和密码进行登录,填写完之后还要通过系统验证;系统验证通过即可完成登录。聊天功能:用户可以进行即时通讯,可以传输文本信息,图片,文件等;用户可以和一个好友聊天,也可以同时和多个好友聊天;用户可以清除当前的聊天窗口。管理用户个人关系功能:用户能够搜索其他陌生用户进行好友的添加;也可以添加多个陌生用户为好友;用户可以修改自己好友列表里好友的备注名称。管理用户个人信息功能:用户可以修改本人的基本信息。密码管理功能:用户可以在登录成功后可以随时修改自己现在所用的密码。未读消息功能:用户登录之后可以获取未在线的好友发送的消息,但不能超过管理员设置的消息时间。普通管理员功能:用户管理功能:可以对违规用户进行封禁和解除封禁。聊天管理功能:普通管理员可以实时的监控聊天日志。系统日志管理功能:普通管理员可以实时监控系统日志。系统管理功能:普通管理员可以查看系统设置。顶级管理员功能:用户管理功能:顶级管理员可以修改其他用户的权限。服务器配置管理功能:超级管理员可以设置未读消息的保存时长。3.3非功能性需求分析(1)系统的响应时间系统的响应时间是极为关键的,如果一个系统功能完善但是响应时间较长,那么用户的体验感也会受到影响,所以要极大程度的缩短系统响应时间,比如:在用户在登录时,尽可能的缩短用户等待的时间,用户进行及时交流时,最好不用等待太久,让用户能及时收发消息。(2)系统的易维护和易用性软件是给用户使用的,所以在用户体验出现问题的时候,一定要及时处理,出现bug和漏洞就要及时修复,而用户群体也是老少皆有,所以软件也不可太过复杂,要简单实用。软件开发也要关注未来的业务,所以要用最简单的方法去进行系统的维护和升级,因此系统的易维护性和易用性是非常必要的。4系统设计4.1数据库设计数据库是一个系统的核心内容,数据库的设计对于系统来说是不可或缺的。在设计数据库是我们需要遵循必要的数据库范式理论,减少多余的数据同时还要保证数据的完整性和正确性。设计一个数据库需要进行以下几个阶段:首先要进行需求分析设计出满足用户需求的实体类,接着就开始进行概念模型设计、逻辑结构设计以及物理结构设计;再之后就需要开始建立数据库,将所需数据编入库。最后还需要对数据库进行运行调试。下面是该系统的数据库概念模型设计:我们根据对数据的分析和处理,可以设计出一些满足用户需求的实体类以及这些实体类之间的关系。这些实体类大概有:登录的用户实体类、群聊实体类以及聊天实体类。用户实体类拥有用户标识、用户昵称、用户密码和一些用户的个人信息。群聊实体类则拥有群聊标识、群主标识、群名称、群聊头像和创建时间。聊天实体类则包含用户标识、聊天类型、聊天对象的用户标识、创建时间、置顶标识和最后一次聊天时间。以下是三个实体类的具体E-R图:图4.1-1用户实体E-R图图4.1-2群聊实体E-R图图4.1-3聊天实体E-R图下面是该系统的逻辑结构设计:用户的集合包括:用户信息集合(用户标识、用户昵称、用户密码、用户性别、用户个性签名、地区编码、用户头像、用户状态、创建时间、最近登录时间、角色标识)。群聊的集合包括:群聊信息集合(群聊标识、群聊名称、群主标识、群聊头像和创建时间)。聊天的集合包括:聊天信息集合(用户标识、聊天对象的用户标识、聊天类型、创建时间、置顶标识、最后一次聊天时间、置顶排序标识)。下面是该系统主要的数据库表设计:USER表保存用户信息;表4.1-1用户信息表CHAT_ROOM表保存最近联系的好友信息;表4.1-2聊天房间表GROUP_CHAT表保存群聊信息;表4.1-3保存群聊信息表GROUP_CHAT_NUMBER表保存群聊成员信息;表4.1-4保存群聊用户表UNREAD_MESSAGE表保存用户未读消息信息;表4.1-5保存用户信息未读消息表CHAT_MESSAGE表保存用户聊天记录信息;表4.1-6保存用户聊天记录表CHAT_FILE表保存用户聊天文件记录信息表4.1-7用户聊天文件记录表APPLY_INFO表保存好友申请记录信息;表4.1-8用户聊天文件记录表数据库表的关系图如下图所示:图4.1-4数据库关系图4.2系统模块设计聊天系统工作原理图;下图展示了聊天系统的工作原理:图4.2-1聊天系统工作原理图系统的功能模块图;下图展示的是系统的功能模块图:图4.2-2聊天系统功能模块图系统用例图;下图展示了系统用例:图4.2-3聊天系统的系统用例图5.系统实现5.1实现概况实现的情况:该系统有注册账号、登录账号、即时通讯、收发文件、后台管理五大功能模块,注册账号模块是用户进行账号注册的功能的模块,是用户进行登录的前提,用户必须要有账号才能登录系统。登录账号模块是用户进行登录的界面,用户在此界面输入正确的账号密码即可完成登录进入首页。即时通讯模块是登录成功的用户与其他登录成功的用户进行即时通讯的模块,用户与用户直接可以在此进行即时通讯,方便快捷。收发文件模块是用户在聊天模块发送文件的功能,用户在即时通讯时可以选择文件传输给对方,也能接收对方传输过来的文件。控制台模块就是该系统的后台管理模块,只有超级管理员才可以登录此模块,在模块可以对其他用户进行部分功能的控制。5.2系统功能实现以下是各个模块的实现情况:注册账号模块:在主页面中点击注册新账号开始注册,填写完名称和密码之后,注册新账号,获取系统随机生成的用户账号,用用户号登录即可。以下是注册页面和注册流程图:图5.1-1注册页面图图5.1-2注册成功图图5.1-3注册流程图代码:登录账号模块:进入该模块用注册成功的用户号登录即可。以下是登录页面和登录流程图:图5.2-1登录页面图5.2-2登录成功页面图图5.2-3登录流程图代码:图5.2-4登录界面代码图聊天模块:即已登录用户与其余在线用户聊天,需先添加对方为好友,再进行聊天。以下是用户聊天页面图以及聊天流程图:图5.3-1搜索好友页面图面5.3-2接受好友请求页图面5.3-3好友即时聊天页图图5.3-4聊天流程图文件模块:文件即为文件发送,好友聊天界面中可以相互发送文件。以下是发送文件以及发送文件流程图:图5.4-1文件发送界面图图5.4-2文件发送完成页面图图5.4-3文件发送流程图后台管理模块:后台管理模块是该系统的后台管理页面,顶级用户和一般管理员可以登录到这个界面。以下是页面图:图5.5-1系统管理界面图6.系统测试6.1测试预期结果在该即时通讯系统当中,理想的测试结果应该如下:系统可以完成正常的注册、登录、即时聊天、添加好友、删除好友、发送文件、查看聊天记录、开启群聊等功能。6.2测试方式系统测试是每个系统开发完后都要进行的工作,所以在系统测试的时候一定要严谨细心,找出系统存在的问题。而测试一般分为内部不可视测试和内部可视测试。内部不可视测试就是系统内部的结构测试人员无法得知,只能用结果去证明功能和里面的是否一致。而内部可视测试是系统内部的结构测试人员可以从外面看得清楚,所以测试人员可以依照内部的结构去测试其功能和原理,看所得的结果和数据与预期的是否相同。经过考量之后我决定用内部不可视测试对其进行检测,这种测试方式更加简单,容易操作,只不过需要比较多的测试案例和测试角度。6.3测试真实结果以下是根据例子进行测试的结果:登录界面的启动测试表如下表所示:表6.3-1登录界面测试表用户注册测试表如下表所示:表6.3-2用户注册测试表添加删除好友测试表如下表所示:表6.3-3添加删除好友测试表文件传输功能测试表如下所示:表6.3-4文件传输测试表7.总结与展望7.1总结该系统的开发采用的是WebSocket协议,开发语言用的是JAVA语言和HTML超文本标记语言结合使用,数据库用的是MySQL数据库,该系统开发的页面符合正常的页面规则,看起来也算好看,符合多个年龄段的人使用。该系统完成了正常即时通讯系统的所有基本功能的开发,并且经过测试功能都运行完善,暂时没有发现BUG或者漏洞,所以可以放心使用。本次的设计开发让我较为粗略的了解了MAVEN框架、Mysql数据库和JAVA开发语言的基本知识和使用。在本次的系统开发中我还学到了很多的经验,在开始设计系统时最先做的应该是准备工作,先把系统分析做好,然后再设计好数据库。最后进行编写程序代码,这样在编写程序时我们也能做到心里有数,有条不紊。在编写程序代码的过程中,我还学到了规范的编码格式,这也能为我以后的工作提供好的经验。这次毕业设计用到了许多在学校没有学习过的知识,但是大部分都是在学校学习的课程基础上进行深入研究的,万变不离其宗。在该系统的开发过程中,因为有许多知识没有接触过,所以很多功能都是个人在网上搜集资料进行开发的,虽然很累,但是收获也非常丰富,我的动手能力和资料收集能力在此次开发中都得到了显著提升。毕业设计已经大致完成,经过老师的指导和同学的帮助,我对于即时通讯系统怎么设计和怎么实现有了更多的理解。通过这次设计,我对自己大学期间所学的知识也有了更多的体会和认知,还帮我改变一些处理事情时懒散的习惯。从最开始时的搜集资料,整理资料,到方案比选,确定方案,再到着手开始进行系统的设计开发,每个过程都是相互连接紧密相关的,如果有哪个步骤遗漏或者疏忽了,也会给之后的设计带来许多的麻烦。7.2展望信息技术的飞速发展给即时通讯带来了巨大的优势,随着人们的生活方式的改变和网络的发展,人们的交流方式也发生了翻天覆地的变化,从最初的书信,飞鸽传书式的交流;到如今电子邮件,视频电话的交流方式,都让人与人之间的距离越来越近,不同的是,曾经的驿站送信要花费的时间和如今电子邮件要花费的时间是天壤之别,人们可以零距离即时的完成信息的交流,再也不用向以前那样为了一个消息而苦苦等。这些优势都能显示出信息技术发展给即时通讯带来的巨大优势。随着与即时通讯有关的法律规定的出台还有商家的诚信意识的进一步增强,国内的网民的不断增加和网络环境的不断改善,网上即时通讯的规范不断的完善,我们有理由相信国内的即时通讯行业规范会越来越完善,也会有越来越多的人在网络上进行通讯,还会有越来越多的企业用网络即时通讯来进行工作交流。国内的即时通讯也会进入到一个繁荣发展的全新时期。总而言之,在互联网发展迅速的当下时代,即时通讯也会越来越繁荣,用户也会越来越多,用户的体验感也会越来越好。参考文献[1]唐弢.基于Java的校园语音通信软件设计[D].电子科技大学,2019.[2]温照松,易仁伟,姚寒冰.基于WebSocket的实时Web应用解决方案[J].电脑知识与技术,2012,8(16):3826-3828.[3]杨泽东.三维地形模型的网络传输及可视化研究[D].南京师范大学,2013.[4]姜仕军.基于XMPP协议的跨平台IM系统的设计与实现[D].大连:大连海事大学,2012年.[5]宋希香.第三代基于Java的校园即时通讯工具的设计与实现[J].科技视界,2020(18):133-135.[6]JinheZhou,TonghaiWu,JunminLeng.ResearchonvoicecodecalgorithmsofSIPphonebasedonembeddedsystem[C].2010IEEEInternationalConferenceonWirelessCommunication

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论