鄧居旺 王杰 許敏



摘要:伴隨著互聯(lián)網(wǎng)技術(shù)的高速發(fā)展,信息交流是人們生活中必不可少的一環(huán),作為信息交流的支撐,在線聊天系統(tǒng)已成為信息交流的重要途徑。在實際應(yīng)用中,滿足用戶在線聊天的情況下,用戶體驗、信息安全、已成為衡量在線聊天的一個重要指標,如何在適度的成本下,為企業(yè)設(shè)計并開發(fā)一個用戶體驗良好,信息安全的在線聊天系統(tǒng),有著一定的需求。文章中基于Jersey和Retrofit框架的在線聊天系統(tǒng)不僅實現(xiàn)了在線聊天的功能,還使用了基于Jersey和Retrofit框架,解決了用戶體驗差以及用戶信息暴露的問題。
關(guān)鍵詞:在線聊天系統(tǒng);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
隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,在線聊天系統(tǒng)的需求日益增長[1],騰訊2019年第一季度微信活躍賬戶數(shù)已達11.12億,同比增長6.9%,繁榮的背后離不開大量用戶的積極參與,也離不開在線聊天系統(tǒng)的良好用戶體驗和信息安全。當前在線聊天是對信息交流的新需求,早期人們的信息交流是通過口耳相傳,文字發(fā)明后,人們傾向于使用書信進行信息交流,但都要遭受時間和空間的限制⑵。到了20世紀70年代,Email的出現(xiàn)意味著人們不用再遭受時間和空間的限制[2],人們可以隨時使用Email進行信息交流[3]。到了21世紀之后,由于Email和短信不再能滿足人們交流的需求,即時通訊出現(xiàn)了,人們可以通過使用即時通訊工具,進行文字、視頻或語音的實時交流[4],但大部分都是基于PC端的。在2010年之后,中國互聯(lián)網(wǎng)用戶數(shù)日新月盛,尤其是以移動手機為載體的中國手機互聯(lián)網(wǎng)用戶[5]。現(xiàn)階段信息交流對在線聊天系統(tǒng)提出了新的要求,不僅要完成在線聊天的基礎(chǔ)功能,還需要保證用戶的信息安全不被泄露,給用戶更好的體驗,根據(jù)每一位用戶個性化定制服務(wù)[6]。
1 需求分析
隨著互聯(lián)網(wǎng)時代的發(fā)展,在線聊天無處不在,聊天系統(tǒng)的用戶體驗以及信息安全也得到了越來越大的重視[7],從中小型企業(yè)的角度來看,考慮到成本問題,很難開發(fā)出一套用戶體驗良好并且能保證信息安全的在線聊天系統(tǒng);另外,如果把在自己的業(yè)務(wù)托管到微信、QQ、阿里旺旺等,那么自己的客戶資源就會被暴露出來,無形中降低了競爭力。因此,如何在適度成本下,為中小型企業(yè)設(shè)計并開發(fā)用戶體驗良好并信息安全的,有著現(xiàn)實的需求。
針對這類需求,本研究設(shè)計并開發(fā)基于Jersey和Retrofit框架的在線聊天系統(tǒng)。該系統(tǒng)實現(xiàn)了在線聊天、群操作、好友操作等基本功能如圖1,并具有如下特性:
(1)釆用MVP(全稱:ModelViewPresenter)模式,保證了系統(tǒng)的簡潔性、靈活性。
(2)釆用Retrofit框架,減少了開發(fā)者使用Android原生接口帶來的性能的損耗和問題。
(3)釆用第三方平臺推送,成本低、消息到達率高。
(4)登錄訪問控制,保證信息安全。
2 系統(tǒng)功能概述
本系統(tǒng)功能主要分為Android端功能需求和服務(wù)器端功能需求以及非功能需求,具體功能概述如圖2所示。
3 主要技術(shù)實現(xiàn)方法
3.1 MVP模式設(shè)計
MVP(全稱:Model View Presenter)模式,是我們熟悉的MVC(全稱:Model View Control)模式的演化版本,如圖3所示MVP與MVC的主要區(qū)別是View與Model不直接交互,而是通過與Presenter來完成交互,這樣可以修改視圖而不影響模型,達到解耦的目的,實現(xiàn)了Model和View真正的完全分離[8]。MVP模式會解除View和Model的耦合,同時又給整個系統(tǒng)帶來良好的擴展性、可測試性,保證了系統(tǒng)的簡潔性、靈活性。
基于Jersey和Retrofit的在線聊天系統(tǒng)釆用C/S結(jié)構(gòu)開發(fā),分為Android客戶端和服務(wù)端兩個部分,使用OSS存儲圖片和語音,最后使用第三方推送平臺進行推送。
Android客戶端釆用的是MVP+Retrofit開發(fā),登錄的時候需要生成獨有的Token才能完成與服務(wù)器的對接,處理后續(xù)的操作都是建立在Token的基礎(chǔ)上。除此之外,如果想要進行消息的發(fā)送,還需要生成第三方推送的PUSHID(推送主鍵),才能夠進行推送。
服務(wù)器端釆用的Jersey+Hibernate開發(fā),用戶登錄的時候服務(wù)器需要驗證用戶的Tokeno用戶發(fā)送消息,需先經(jīng)過服務(wù)器的處理,才發(fā)送給第三方推送平臺,最后推送給Android客戶端。
3.2 Jersey和Retrofit框架
JerseyRESTful框架是開源的RESTful框架,實現(xiàn)了JAX-RS(JSR311和JSR399)規(guī)范[9]。在功能上,Jersey和Struts類似,并且同樣支持與Spring和Hibernate的結(jié)合。在本系統(tǒng)的服務(wù)端,就是通過Jersey+Hibernate實現(xiàn)的。Jersey框架使用注解簡化了請求式服務(wù),支持異步調(diào)用,并且支持xml和Json的數(shù)據(jù)格式。
Retrofit是一個可用于Android的網(wǎng)絡(luò)庫。Retrofit不是網(wǎng)絡(luò)框架,它實現(xiàn)了對網(wǎng)絡(luò)框架OkHttp的完美封裝,真正的網(wǎng)絡(luò)請求工作由OkHttp實現(xiàn)。Retrofit能夠簡化開發(fā)者對網(wǎng)絡(luò)部分的工作,提高開發(fā)者的效率和正確性,減少開發(fā)者直接使用Android原生接口帶來的性能損耗。
3.3 第三方消息推送平臺
本課題主要研究的是以Android為主體的移動端即時通訊軟件,想要實現(xiàn)即時通訊的功能,一般會有如下幾種方案:
1)第三方平臺集成即時通訊,無須做任何實現(xiàn)。
2)spark+smack+openfire套餐,這個方案基于XMPP,負載重。
3)嵌入第三方推送的SDK,這個方案簡單實用。
4)Socket長連接,適合簡單地使用,影響服務(wù)器的性能。
5)基于XMPP自己實現(xiàn),工作量復雜,負載重。
綜合以上的優(yōu)缺點,最終選擇通過第三方推送實現(xiàn)。相比較于其他推送方式,使用第三方推送平臺進行推送有著成本低(推送平臺的推送免費,如果自己實現(xiàn)需要消耗很多資源)消息的到達率高等優(yōu)點。推送流程圖如圖3所示。
3.4 登錄、訪問控制的實現(xiàn)
Android即時通訊的登錄模塊也是整個系統(tǒng)的重要一環(huán),系統(tǒng)需要保證登錄的安全性、穩(wěn)定性和簡要性[10]。本系統(tǒng)的登錄驗證流程如下:
l)Android客戶端初始化的時候會從個推的服務(wù)器獲取設(shè)備的Pushld,并存儲到手機里;
2)用戶在即時通訊的客戶端輸入用戶名和密碼,點擊登錄;
3)Android即時通訊客戶端需要確保賬號匹配電話號碼的正則表達式和密碼大于6位;密碼和賬號滿足的情況下,進行下一步操作,否則,提示用戶如何輸入;
4)Android即時通訊客戶端對用戶輸入的密碼進行MD5加密;
5)即時通訊系統(tǒng)將用戶輸入的賬號、密碼和Pushld封裝成實體,創(chuàng)建Socket,發(fā)送網(wǎng)絡(luò)請求;
6)服務(wù)器在接收到用戶的網(wǎng)絡(luò)請求,解析當前的數(shù)據(jù)并判斷當前的數(shù)據(jù)是否規(guī)范,不規(guī)范就返回當前的信息不合格;
7)合格的情況下,判斷當前的Pushld是否跟數(shù)據(jù)庫中的Pushld是否相同,不相同的情況下,強制之前的設(shè)備下線,并使用UUID隨機生成新的Token,返回給客戶端;
8)客戶端在接收到新的Token存儲到當前的設(shè)備。
因為服務(wù)端接口的暴露性,因此我們得注意服務(wù)端接口的安全性,避免任何請求都能活到本系統(tǒng)的數(shù)據(jù)這樣的情況的發(fā)生。由于本系統(tǒng)采用的Jersey框架開發(fā),Jersey框架是開源的RESTful框架,眾所周知,RESTful接口沒有狀態(tài),也就是說對App端的所有請求都需要響應(yīng)。通過在請求頭里面加入Token,實現(xiàn)了對服務(wù)端接口的訪問控制。用戶登錄成功后,服務(wù)端通過UUID隨機生成一個Token,封裝成用戶信息返回給客戶端,客戶端接收到Token之后,存儲到當前手機,每次訪問服務(wù)端接口的時候,都將Token放入請求頭中傳給服務(wù)器端,服務(wù)端驗證Token之后,才能進行下一步的訪問。
在客戶端發(fā)送網(wǎng)絡(luò)請求的時,判斷當前是否存在Token,存在的情況下,在請求頭里面添加Token,步驟如下:服務(wù)端初始化之前,在Application里面注冊一個全局的攔截器,攔截非注冊和登錄的其他不包含Token的請求。當服務(wù)端接收到客戶端的請求之后,獲取請求頭里面的Token,如果Token存在,則查詢對應(yīng)的用戶,當用戶存在的時候,直接返回。否則,就返回賬戶異常,最終攔截該請求的繼續(xù)下發(fā)。如圖5訪問控制流程圖所示。
4 結(jié)束語
本研究所設(shè)計的系統(tǒng)具有以下特點:本系統(tǒng)釆用MVP模式,MVP模式會解除View和Model的耦合,同時又給整個系統(tǒng)帶來良好的擴展性、可測試性,保證了系統(tǒng)的簡潔性、靈活性;釆用Jersey和Retrofit框架,提高開發(fā)者的效率和正確性,減少了開發(fā)者使用Android原生接口帶來的性能的損耗和問題;使用第三方消息推送平臺,確保了低成本的情況下有較高的消息到達率;登錄和訪問受控制,保證了聊天系統(tǒng)的安全性。
參考文獻:
[1] 何燕青.基于ASP.NET的網(wǎng)上訂餐系統(tǒng)設(shè)計與實現(xiàn)[D].成都:電子科技大學,2014.
[2] 郭宇.移動互聯(lián)網(wǎng)時代電信運營商商業(yè)模式創(chuàng)新研究[D].南昌:江西財經(jīng)大學,2014.
[3] 周利榮.傳播媒介發(fā)展與文學文體演變研究[D].西安:陜西師范大學,2012.
[4] 吳保來.基于互聯(lián)網(wǎng)的社交網(wǎng)絡(luò)研究[D].北京:中共中央黨校,2013.
[5] 彭歡.移動互聯(lián)網(wǎng)使用與滿足研究[D].長沙:湖南師范大學,2012.
[6] 蔣杉杉.手機APP廣告點擊意愿的影響因素研究[D].成都:電子科技大學,2013.
[7] 吳祐昕.Web2.0背景下的新興文化創(chuàng)意產(chǎn)業(yè)研究[D].上海:復旦大學,2013.
[8] 鄧志宏,張智,李建奇,等.基于MVP模式的進銷存系統(tǒng)的軟件架構(gòu)設(shè)計[J].計算機與數(shù)字工程,2010,38(12):96-99.
[9] 王傳琦.基于RESTful移動教學輔助系統(tǒng)研究與實現(xiàn)[D].沈陽:遼寧大學,2017.
[10] 呂留記.基于Android的即時通訊系統(tǒng)的研究與實現(xiàn)[D].成都:電子科技大學,2016.
[通聯(lián)編輯:代影]