梁振偉
摘要:IM服務(wù)器就是一臺獨(dú)立運(yùn)行的程序,接收用戶發(fā)送給服務(wù)器的信息,并將其轉(zhuǎn)發(fā)至其他用戶,而目前國內(nèi)的IM服務(wù)器一般都是由其他大廠進(jìn)行派發(fā),程序需要進(jìn)行二次開發(fā),用戶相關(guān)信息放置在一個(gè)配置文件里,安全性相對較低。該文通過對編程教育類App進(jìn)行分析,分別從學(xué)生、老師的角度出發(fā),尋找合理有效的解決方案。并通過自建IM服務(wù)器的方法,以此實(shí)現(xiàn)即時(shí)通信。
關(guān)鍵詞:即時(shí)通信;移動學(xué)習(xí);編程教育
中圖分類號:TP311? ? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2020)36-0075-02
Abstract: IM server is an independent running program that receives information sent by users to the server and forwards it to other users. At present, domestic IM servers are generally distributed by other large factories. The program needs secondary development, user-related information placed in a configuration file, relatively low security. By analyzing the App of programming education, this paper looks for reasonable and effective solutions from the perspective of students and teachers. And through the self-built IM server method, so as to achieve instant messaging.
Key words: Instant Messaging; mobile learning; programming education
1 猿學(xué)習(xí)App的研究
對于類似學(xué)習(xí)移動教育App的設(shè)計(jì),本系統(tǒng)對國內(nèi)一些相關(guān)軟件進(jìn)行了系統(tǒng)分析。比如CSDN的移動App客戶端,主要功能為熱點(diǎn)資訊、資料查閱、博客查看、課程學(xué)習(xí)等相關(guān)功能。再如在線編程App,實(shí)現(xiàn)了資訊、網(wǎng)頁編程、學(xué)習(xí)資源、代碼文檔等功能。雖然目前這些App的功能相對完善,但是服務(wù)的主要對象不是高校群體,很顯然其沒有合理解決老師與學(xué)生的問題。在查看并分析了這些App的不足后,本系統(tǒng)根據(jù)實(shí)際情況,為了處理這些遺留問題,在保留借鑒了一些功能的同時(shí),針對性地開發(fā)了一些額外功能,以保證這些問題可以很好地解決。
1.1 猿學(xué)習(xí)App的需求分析
對于本App,服務(wù)的對象主要分為兩個(gè),學(xué)生與老師。對于學(xué)生而言,主要的問題是資源缺少、課程單一。對于老師而言,則是課程少,知識點(diǎn)多,復(fù)雜,無法短時(shí)間內(nèi)保證學(xué)生完全掌握課堂知識。所以為了處理這些問題,本系統(tǒng)主要設(shè)置了聊天室、好友添加、視頻播放、資訊信息等相關(guān)功能進(jìn)行處理,老師可以在聊天室與學(xué)生進(jìn)行交流,及時(shí)了解學(xué)生課堂上的疑點(diǎn)、難點(diǎn),幫助學(xué)生及時(shí)答疑。而好友功能的設(shè)置則是為了幫助用戶間的相互交流學(xué)習(xí),視頻觀看可以讓用戶在線觀看學(xué)習(xí)資源,提高知識水平。熱點(diǎn)資訊讓用戶第一時(shí)間了解計(jì)算機(jī)最新發(fā)展。學(xué)習(xí)資源包括軟考資料、經(jīng)驗(yàn)總結(jié)、基礎(chǔ)教程等,幫助學(xué)生根據(jù)自己需求進(jìn)行針對性的學(xué)習(xí)。
1.2 猿學(xué)習(xí)App模塊層次結(jié)構(gòu)
本系統(tǒng)的層次結(jié)構(gòu),按照功能進(jìn)行分析,可以大致分為客戶端、服務(wù)器、數(shù)據(jù)庫、瀏覽器。具體如圖1所示。
服務(wù)器上,主要使用了Tomcat服務(wù)器,Openfire服務(wù)器等,對于Tomcat服務(wù)器而言,采用Java經(jīng)典三層架構(gòu)(Web,Dao,Service)進(jìn)行開發(fā),Dao用于數(shù)據(jù)庫的一系列操作,Service負(fù)責(zé)處理業(yè)務(wù)層,Web負(fù)責(zé)后臺數(shù)據(jù)的接收、修改。對于Openfire服務(wù)器而言,則是使用Spark,Smack相結(jié)合的方式實(shí)現(xiàn)聊天相關(guān)功能,Spark服務(wù)于管理員,方便管理員對其他賬號的管理,以及聊天室的監(jiān)聽查看,Smack與Android客戶端結(jié)合,負(fù)責(zé)接收Openfire服務(wù)器的數(shù)據(jù),以及聊天信息的發(fā)送。
在客戶端上,主要的Android客戶端使用Xutils,Gson,ijkplayer,Smack,ShareSDK這類第三方庫,Xutils負(fù)責(zé)客戶端數(shù)據(jù)的發(fā)送,傳輸以及服務(wù)器的數(shù)據(jù)獲取。Gson負(fù)責(zé)服務(wù)器數(shù)據(jù)的解析。Ijkplayer負(fù)責(zé)視頻的播放,Smack負(fù)責(zé)向Openfire服務(wù)器進(jìn)行XML數(shù)據(jù)發(fā)送、接收,以此實(shí)現(xiàn)聊天相關(guān)的操作。除此之外,我們還使用了SharedPreferences、SQLite進(jìn)行用戶數(shù)據(jù)的保存以及聊天記錄的保存。ShareSDK負(fù)責(zé)分享功能的實(shí)現(xiàn)。
數(shù)據(jù)庫上,本系統(tǒng)使用了Mysql、SQLite數(shù)據(jù)庫。Mysql用于服務(wù)器上存儲用戶好友信息,用戶賬號密碼等數(shù)據(jù)。SQLIte則是保存本地用戶信息,聊天歷史等服務(wù)。
瀏覽器上使用Summer Note,jQuery等庫實(shí)現(xiàn)。Summer Note負(fù)責(zé)發(fā)布教程等需要用到網(wǎng)頁編輯的功能,jQuery負(fù)責(zé)廣告輪播、Ajax(異步加載)等功能實(shí)現(xiàn)。
1.3 猿學(xué)習(xí)App的功能實(shí)現(xiàn)
對于本系統(tǒng)而言,主要實(shí)現(xiàn)的功能有:在線聊天,好友功能,聊天室,視頻觀看,熱點(diǎn)資訊,學(xué)習(xí)資源,在線測試等。對于在線聊天、聊天室,本系統(tǒng)在服務(wù)器上額外搭建一個(gè)Openfire服務(wù)器進(jìn)行聊天實(shí)現(xiàn)。用戶發(fā)送的信息將會被Openfire服務(wù)器接收,并根據(jù)類型進(jìn)行轉(zhuǎn)發(fā)給其他用戶。視頻觀看,則是從服務(wù)器上獲取數(shù)據(jù),之后根據(jù)用戶點(diǎn)擊的URL,發(fā)送請求,讓服務(wù)器返回資源給客戶端,最后使用Android第三方插件Ijkplayer進(jìn)行視頻的播放。熱點(diǎn)資訊、學(xué)習(xí)資源這兩個(gè)功能的主要原理都是從服務(wù)器發(fā)送請求,服務(wù)器在返回json類型的數(shù)據(jù)給Android客戶端,客戶端使用Gson插件進(jìn)行json解析,在渲染頁面給用戶展示。在線測試則是根據(jù)用戶所選題目類型,進(jìn)行隨機(jī)題目選取,根據(jù)用戶所選結(jié)果進(jìn)行分析,給出合理的信息解答。
2 IM服務(wù)器
在目前主流IM服務(wù)器的選擇上,主要是由騰訊云、阿里云、網(wǎng)易云等大的運(yùn)營商進(jìn)行提供,對于開發(fā)者而言,不僅需要額外去運(yùn)營商網(wǎng)站上進(jìn)行文件配置,獲取key密鑰,而且還需要自己設(shè)計(jì)加密方式對信息進(jìn)行額外加密、保存。除此之外,黑客在對程序進(jìn)行反編譯的時(shí)候,可能會根據(jù)key密鑰信息將數(shù)據(jù)進(jìn)行修改、盜取,存在一定的安全隱患。而為了解決這一問題,通過查閱大量資料后,了解,發(fā)現(xiàn)自建IM服務(wù)器其實(shí)可以有一定的可行性。自建的IM服務(wù)器,用戶信息保存在服務(wù)器上,而且對用戶信息進(jìn)行了多次加密。所以獨(dú)立開發(fā)一臺IM服務(wù)器實(shí)現(xiàn)即時(shí)通信,較好地保護(hù)用戶信息安全,不失為一種可行的方式。
2.1 IM服務(wù)器的搭建
對于自建IM服務(wù)器,本系統(tǒng)選擇的是Apache公司下的Opnefire服務(wù)器,用其進(jìn)行IM開發(fā)。Opnefire服務(wù)器遵循了XMPP協(xié)議,數(shù)據(jù)在傳輸時(shí)使用的是XML的形式,靈活,方便。除此之外,由于其繼承了XML的特點(diǎn),所以在傳輸信息上也是可以的,特別是發(fā)送擴(kuò)展信息,解析,處理客戶端請求上有著更好的效率。而如何搭建一個(gè)Opnefire服務(wù)器,主要分為以下幾步:
首先,是搭建Opnefire服務(wù)器運(yùn)行的環(huán)境。Opnefire服務(wù)器主要使用Java作為運(yùn)行環(huán)境,Mysql作為數(shù)據(jù)庫。所以要下載Java、Mysql的安裝包,配置Java環(huán)境變量,設(shè)置Mysql監(jiān)聽端口。之后去Apache官網(wǎng)下載對應(yīng)版本的Opnefire運(yùn)行文件,打開運(yùn)行,設(shè)置端口號,配置Mysql位置,以及密鑰信息,最后根據(jù)實(shí)際情況,去客戶端導(dǎo)入相關(guān)實(shí)現(xiàn)依賴文件或者下載相關(guān)運(yùn)行文件即可。
2.2 自建IM服務(wù)器的安全性分析
對于自建IM服務(wù)器,可以與傳統(tǒng)運(yùn)營商的IM服務(wù)器都進(jìn)行一次假設(shè)。對于自建IM服務(wù)器而言,黑客通過反編譯破解了程序,獲取了key密鑰信息,其也只可以通過密鑰信息查詢到加密了的信息。如果想要對信息進(jìn)行查看,需要額外進(jìn)行解密操作,由于服務(wù)器對于信息加密次數(shù)過多,黑客很難獲取到真實(shí)的信息。再者,黑客如果真的拿到了key密鑰,偽裝成開發(fā)者登錄Opnefire服務(wù)器,也需要額外進(jìn)行一次登錄遠(yuǎn)程服務(wù)器。而對于傳統(tǒng)運(yùn)營商的IM服務(wù)器,黑客獲取了key密鑰后,通過密鑰查詢到加密后的信息。但是只要偽裝成開發(fā)者,運(yùn)營商為了方便開發(fā)者,不需要額外操作,就會將加密信息自動進(jìn)行解密展示。所以從這個(gè)角度出發(fā),自建IM服務(wù)器的安全性相對較高,用戶信息可以很好地被保護(hù)。
2.3 自建IM服務(wù)器的應(yīng)用
對于自建IM服務(wù)器的應(yīng)用,以O(shè)penfire為例,一般分為三種情況,一種是PC端使用,一種是網(wǎng)頁瀏覽器使用,最后是移動應(yīng)用的使用。對于PC端而言,進(jìn)行即時(shí)通訊,需要結(jié)合Spark使用,安裝Spark客戶端之后,只需要填入IP信息、用戶名、密碼即可登錄使用,就如PC上的QQ軟件一樣,使用方便、快捷。網(wǎng)頁瀏覽器上,則是把用戶發(fā)送的信息先轉(zhuǎn)換為XML的形式,再使用key密鑰,將信息發(fā)送給服務(wù)器接收,服務(wù)器再把信息轉(zhuǎn)發(fā)至其他用戶。移動應(yīng)用則是導(dǎo)入Smack的相關(guān)依賴,通過Smack內(nèi)部的方法,連接Openfire服務(wù)器,之后使用HTTP將信息發(fā)送給服務(wù)器接收即可。對于開發(fā)者而言,操作簡單、方便、快捷,而且使用方式多樣。
3 總結(jié)
在目前移動應(yīng)用飛速發(fā)展的大環(huán)境下,移動服務(wù)將會成為未來發(fā)展的一種趨勢,開發(fā)一個(gè)面向高校學(xué)生群體的學(xué)習(xí)類App,為學(xué)生、老師提供一個(gè)學(xué)習(xí)交流的平臺,也不失為一種合理的嘗試。而自建IM服務(wù)器也將會成為一種發(fā)展趨勢,越來越多的企業(yè)、開發(fā)者為了開發(fā)便利、安全性的考慮會自建相關(guān)的IM服務(wù)器。而IM服務(wù)器的種類也會更加多樣,功能安全性也會更高。
參考文獻(xiàn):
[1] 梁莎.App界面設(shè)計(jì)課程的探索與思考[J].高教學(xué)刊,2015(14):73-74.
[2] 胡曉輝.基于Android的C語言學(xué)習(xí)App開發(fā)研究[J].電腦知識與技術(shù),2019,15(22):82-83,86.
[3] 于瀟東.移動學(xué)習(xí)App在國家開放大學(xué)教育中的應(yīng)用[J].內(nèi)蒙古電大學(xué)刊,2019(2):106-108,113.
[4] 張?zhí)煜?,郝凱東,徐志良.基于Android系統(tǒng)下的夜跑App[J].電子測試,2019(2):89-90,88.
【通聯(lián)編輯:代影】