当前位置:首页 期刊杂志

基于Jersey和Retrofit框架的在线聊天系统的设计与实现

时间:2024-05-04

邓居旺 王杰 许敏

摘要:伴随着互联网技术的高速发展,信息交流是人们生活中必不可少的一环,作为信息交流的支撑,在线聊天系统已成为信息交流的重要途径。在实际应用中,满足用户在线聊天的情况下,用户体验、信息安全、已成为衡量在线聊天的一个重要指标,如何在适度的成本下,为企业设计并开发一个用户体验良好,信息安全的在线聊天系统,有着一定的需求。文章中基于Jersey和Retrofit框架的在线聊天系统不仅实现了在线聊天的功能,还使用了基于Jersey和Retrofit框架,解决了用户体验差以及用户信息暴露的问题。

关键词:在线聊天系统;Jersey和Retrofit框架;用户体验;信息安全

中图分类号:TP311

文獻标识码:A

文章编号:1009-3044(2020)04-0032-03

Design and Implementation of Online Chat System Based on Jersey and Retrofit Framework

DENG Ju-wang1,WANG Jie2,XU Min1

(1.School of Internet of Things Technology,Wuxi Institute of Technology,Wuxi 214121,China;2.Test Business Department,Wuxi Olanto Technology Co.,Ltd,Wuxi 214000,China)

Abstract:With the rapid development of Internet technology,information exchange is an essential part of people's life.As the support of information exchange,online chat system has become an important way of information exchange.In practical application,to meet the needs of online chat,user experience and information security have become an important indicator of online chat.How to design and develop an online chat system with good user experience and information security for enterprises at a moderate cost has a certain demand.In this paper,the online chat system Based on the Jersey and retrofit framework not only realizes the online chat function,but also uses the Jersey and retrofit framework to solve the problem of poor user experience and user information exposure.

Key words:online chat system;Jersey and retrofit framework;user experience;infonnation security

随着互联网技术的不断发展,在线聊天系统的需求日益增长[1],腾讯2019年第一季度微信活跃账户数已达11.12亿,同比增长6.9%,繁荣的背后离不开大量用户的积极参与,也离不开在线聊天系统的良好用户体验和信息安全。当前在线聊天是对信息交流的新需求,早期人们的信息交流是通过口耳相传,文字发明后,人们倾向于使用书信进行信息交流,但都要遭受时间和空间的限制⑵。到了20世纪70年代,Email的出现意味着人们不用再遭受时间和空间的限制[2],人们可以随时使用Email进行信息交流[3]。到了21世纪之后,由于Email和短信不再能满足人们交流的需求,即时通讯出现了,人们可以通过使用即时通讯工具,进行文字、视频或语音的实时交流[4],但大部分都是基于PC端的。在2010年之后,中国互联网用户数日新月盛,尤其是以移动手机为载体的中国手机互联网用户[5]。现阶段信息交流对在线聊天系统提出了新的要求,不仅要完成在线聊天的基础功能,还需要保证用户的信息安全不被泄露,给用户更好的体验,根据每一位用户个性化定制服务[6]。

1 需求分析

随着互联网时代的发展,在线聊天无处不在,聊天系统的用户体验以及信息安全也得到了越来越大的重视[7],从中小型企业的角度来看,考虑到成本问题,很难开发出一套用户体验良好并且能保证信息安全的在线聊天系统;另外,如果把在自己的业务托管到微信、QQ、阿里旺旺等,那么自己的客户资源就会被暴露出来,无形中降低了竞争力。因此,如何在适度成本下,为中小型企业设计并开发用户体验良好并信息安全的,有着现实的需求。

针对这类需求,本研究设计并开发基于Jersey和Retrofit框架的在线聊天系统。该系统实现了在线聊天、群操作、好友操作等基本功能如图1,并具有如下特性:

(1)釆用MVP(全称:ModelViewPresenter)模式,保证了系统的简洁性、灵活性。

(2)釆用Retrofit框架,减少了开发者使用Android原生接口带来的性能的损耗和问题。

(3)釆用第三方平台推送,成本低、消息到达率高。

(4)登录访问控制,保证信息安全。

2 系统功能概述

本系统功能主要分为Android端功能需求和服务器端功能需求以及非功能需求,具体功能概述如图2所示。

3 主要技术实现方法

3.1 MVP模式设计

MVP(全称:Model View Presenter)模式,是我们熟悉的MVC(全称:Model View Control)模式的演化版本,如图3所示MVP与MVC的主要区别是View与Model不直接交互,而是通过与Presenter来完成交互,这样可以修改视图而不影响模型,达到解耦的目的,实现了Model和View真正的完全分离[8]。MVP模式会解除View和Model的耦合,同时又给整个系统带来良好的扩展性、可测试性,保证了系统的简洁性、灵活性。

基于Jersey和Retrofit的在线聊天系统釆用C/S结构开发,分为Android客户端和服务端两个部分,使用OSS存储图片和语音,最后使用第三方推送平臺进行推送。

Android客户端釆用的是MVP+Retrofit开发,登录的时候需要生成独有的Token才能完成与服务器的对接,处理后续的操作都是建立在Token的基础上。除此之外,如果想要进行消息的发送,还需要生成第三方推送的PUSHID(推送主键),才能够进行推送。

服务器端釆用的Jersey+Hibernate开发,用户登录的时候服务器需要验证用户的Tokeno用户发送消息,需先经过服务器的处理,才发送给第三方推送平台,最后推送给Android客户端。

3.2 Jersey和Retrofit框架

JerseyRESTful框架是开源的RESTful框架,实现了JAX-RS(JSR311和JSR399)规范[9]。在功能上,Jersey和Struts类似,并且同样支持与Spring和Hibernate的结合。在本系统的服务端,就是通过Jersey+Hibernate实现的。Jersey框架使用注解简化了请求式服务,支持异步调用,并且支持xml和Json的数据格式。

Retrofit是一个可用于Android的网络库。Retrofit不是网络框架,它实现了对网络框架OkHttp的完美封装,真正的网络请求工作由OkHttp实现。Retrofit能够简化开发者对网络部分的工作,提高开发者的效率和正确性,减少开发者直接使用Android原生接口带来的性能损耗。

3.3 第三方消息推送平台

本课题主要研究的是以Android为主体的移动端即时通讯软件,想要实现即时通讯的功能,一般会有如下几种方案:

1)第三方平台集成即时通讯,无须做任何实现。

2)spark+smack+openfire套餐,这个方案基于XMPP,负载重。

3)嵌入第三方推送的SDK,这个方案简单实用。

4)Socket长连接,适合简单地使用,影响服务器的性能。

5)基于XMPP自己实现,工作量复杂,负载重。

综合以上的优缺点,最终选择通过第三方推送实现。相比较于其他推送方式,使用第三方推送平台进行推送有着成本低(推送平台的推送免费,如果自己实现需要消耗很多资源)消息的到达率高等优点。推送流程图如图3所示。

3.4 登录、访问控制的实现

Android即时通讯的登录模块也是整个系统的重要一环,系统需要保证登录的安全性、稳定性和简要性[10]。本系统的登录验证流程如下:

l)Android客户端初始化的时候会从个推的服务器获取设备的Pushld,并存储到手机里;

2)用户在即时通讯的客户端输入用户名和密码,点击登录;

3)Android即时通讯客户端需要确保账号匹配电话号码的正则表达式和密码大于6位;密码和账号满足的情况下,进行下一步操作,否则,提示用户如何输入;

4)Android即时通讯客户端对用户输入的密码进行MD5加密;

5)即时通讯系统将用户输入的账号、密码和Pushld封装成实体,创建Socket,发送网络请求;

6)服务器在接收到用户的网络请求,解析当前的数据并判断当前的数据是否规范,不规范就返回当前的信息不合格;

7)合格的情况下,判断当前的Pushld是否跟数据库中的Pushld是否相同,不相同的情况下,强制之前的设备下线,并使用UUID随机生成新的Token,返回给客户端;

8)客户端在接收到新的Token存储到当前的设备。

因为服务端接口的暴露性,因此我们得注意服务端接口的安全性,避免任何请求都能活到本系统的数据这样的情况的发生。由于本系统采用的Jersey框架开发,Jersey框架是开源的RESTful框架,众所周知,RESTful接口没有状态,也就是说对App端的所有请求都需要响应。通过在请求头里面加入Token,实现了对服务端接口的访问控制。用户登录成功后,服务端通过UUID随机生成一个Token,封装成用户信息返回给客户端,客户端接收到Token之后,存储到当前手机,每次访问服务端接口的时候,都将Token放入请求头中传给服务器端,服务端验证Token之后,才能进行下一步的访问。

在客户端发送网络请求的时,判断当前是否存在Token,存在的情况下,在请求头里面添加Token,步骤如下:服务端初始化之前,在Application里面注册一个全局的拦截器,拦截非注册和登录的其他不包含Token的请求。当服务端接收到客户端的请求之后,获取请求头里面的Token,如果Token存在,则查询对应的用户,当用户存在的时候,直接返回。否则,就返回账户异常,最终拦截该请求的继续下发。如图5访问控制流程图所示。

4 结束语

本研究所设计的系统具有以下特点:本系统釆用MVP模式,MVP模式会解除View和Model的耦合,同时又给整个系统带来良好的扩展性、可测试性,保证了系统的简洁性、灵活性;釆用Jersey和Retrofit框架,提高开发者的效率和正确性,减少了开发者使用Android原生接口带来的性能的损耗和问题;使用第三方消息推送平台,确保了低成本的情况下有较高的消息到达率;登录和访问受控制,保证了聊天系统的安全性。

参考文献:

[1] 何燕青.基于ASP.NET的网上订餐系统设计与实现[D].成都:电子科技大学,2014.

[2] 郭宇.移动互联网时代电信运营商商业模式创新研究[D].南昌:江西财经大学,2014.

[3] 周利荣.传播媒介发展与文学文体演变研究[D].西安:陕西师范大学,2012.

[4] 吴保来.基于互联网的社交网络研究[D].北京:中共中央党校,2013.

[5] 彭欢.移动互联网使用与满足研究[D].长沙:湖南师范大学,2012.

[6] 蒋杉杉.手机APP广告点击意愿的影响因素研究[D].成都:电子科技大学,2013.

[7] 吴祐昕.Web2.0背景下的新兴文化创意产业研究[D].上海:复旦大学,2013.

[8] 邓志宏,张智,李建奇,等.基于MVP模式的进销存系统的软件架构设计[J].计算机与数字工程,2010,38(12):96-99.

[9] 王传琦.基于RESTful移动教学辅助系统研究与实现[D].沈阳:辽宁大学,2017.

[10] 吕留记.基于Android的即时通讯系统的研究与实现[D].成都:电子科技大学,2016.

[通联编辑:代影]

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!