国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于MQTT Proxy的移動互聯(lián)網(wǎng)信息推送系統(tǒng)設(shè)計(jì)

2017-03-06 23:53崔艷萍武國輝閻知知黃龍
軟件導(dǎo)刊 2017年1期
關(guān)鍵詞:移動互聯(lián)網(wǎng)

崔艷萍+武國輝+閻知知+黃龍

摘要摘要:緊隨“互聯(lián)網(wǎng)+”發(fā)展前沿,研究適用于移動互聯(lián)網(wǎng)的信息推送技術(shù)。對比多種設(shè)計(jì)方案,基于消息隊(duì)列遙測傳輸協(xié)議設(shè)計(jì)信息推送系統(tǒng)。研發(fā)了配置安卓操作系統(tǒng)的手機(jī)APP客戶端、PHP服務(wù)器端,數(shù)據(jù)庫使用MySql,在Windows2008 Server環(huán)境下搭建代理服務(wù)器。設(shè)計(jì)了連接識別字符串算法、Activity跳轉(zhuǎn)URL算法,并加入了多種可提升用戶使用體驗(yàn)效果的功能。從某學(xué)校試點(diǎn)推廣使用的結(jié)果可知,設(shè)計(jì)方案新穎、方便實(shí)用,性能穩(wěn)定可靠,增強(qiáng)了用戶的移動互聯(lián)網(wǎng)應(yīng)用體驗(yàn)。

關(guān)鍵詞關(guān)鍵詞:移動互聯(lián)網(wǎng);信息推送;消息隊(duì)列遙測傳輸;PHP

DOIDOI:10.11907/rjdk.162138

中圖分類號:TP319文獻(xiàn)標(biāo)識碼:A文章編號文章編號:16727800(2017)001007105

0引言

移動通信服務(wù)已經(jīng)成為人們?nèi)粘I钪胁豢扇鄙俚牟糠諿1]。截至2014年12月,中國網(wǎng)民規(guī)模6.49億,手機(jī)網(wǎng)民5.57億[2],網(wǎng)民平均每天“玩手機(jī)”158分鐘[3]。面對技術(shù)爆炸性變革,“互聯(lián)網(wǎng)+”戰(zhàn)略被提升到了前所未有的高度。移動互聯(lián)網(wǎng)+通信=即時(shí)通信。對于這樣的應(yīng)用模式,大家熟知的有QQ、微信,與傳統(tǒng)概念顯著的區(qū)別在于前者使用的是數(shù)據(jù)流量業(yè)務(wù),而后者使用的是語音業(yè)務(wù)。信息推送是以互聯(lián)網(wǎng)、數(shù)據(jù)挖掘、通信以及自然語言處理等多專業(yè)方向相融合的綜合性技術(shù)。信息推送技術(shù)最早由美國PointCastNetwork公司于1996年提出[4]。信息推送服務(wù)系統(tǒng)自動將合適的信息推送給合適的人,幫助用戶高效率地發(fā)掘有價(jià)值的信息。在這個信息處理過程中,信息推送服務(wù)器是主動方,用戶手中的客戶端是被動方。很多行業(yè)都將它作為重要的網(wǎng)絡(luò)營銷手段之一,例如中國工商銀行近期推出的一款理財(cái)手機(jī)APP軟件“融e聯(lián)”工銀信使就是以信息推送技術(shù)為基礎(chǔ)研發(fā)出來的。 1信息推送方案對比

1.1適用于移動互聯(lián)網(wǎng)的信息推送方案設(shè)計(jì)原則

具體如下:①安全性,保障用戶信息交互和傳遞安全;②穩(wěn)定性,保障用戶客戶端和服務(wù)器端的長期可靠運(yùn)行;③省電省流量,處理冗余數(shù)據(jù)少,待機(jī)開銷??;④體積小,不過多占用有限的移動存儲空間。1.2輪詢信息方案

該方案可以形象地稱之為“拉”信息。用戶手中的信息推送服務(wù)客戶端每隔一定的時(shí)間與服務(wù)器建立一次連發(fā)3D版本的訓(xùn)練游戲,可有效提升用戶參與度。此外,目前游戲市場所占份額最多的仍屬低齡段的語文、數(shù)學(xué)、外語等主科教學(xué),針對特殊教育等社會應(yīng)用的游戲案例較少,面向自閉癥兒童的3D訓(xùn)練游戲研發(fā)可彌補(bǔ)此類需求,在特殊教育機(jī)構(gòu)、醫(yī)院自閉癥??频炔块T有廣闊的市場。

查詢服務(wù)器上是否有信息發(fā)布出來,如果有就取回并顯示到客戶端上。這種方案看似簡單直接,但是輪詢間隔時(shí)間很難優(yōu)化。輪詢間隔時(shí)間設(shè)置太長,信息推送的實(shí)時(shí)性就很差;而如果這個時(shí)間設(shè)置太短,勢必會增加網(wǎng)絡(luò)流量和消耗電量,對于移動互聯(lián)網(wǎng)而言,這是“大忌”。1.3攔截信息方案

移動通信運(yùn)營商向用戶發(fā)送短信息,用戶的信息推送服務(wù)客戶端攔截該短信息并將其內(nèi)容解析出來,根據(jù)解析內(nèi)容跳轉(zhuǎn)訪問服務(wù)器的指定頁面。該方案可以保證信息推送的實(shí)時(shí)性,技術(shù)上問題不大。問題出在實(shí)際應(yīng)用上,一是找不到能夠免費(fèi)發(fā)送短消息的移動通信網(wǎng)關(guān),二是實(shí)現(xiàn)該方案需要支付給移動運(yùn)營商的費(fèi)用無法承受。1.4持久連接信息方案

用戶手中的信息推送服務(wù)客戶端與服務(wù)器建立一個持久連接,即使網(wǎng)絡(luò)中斷,連接信息不丟失、資源不回收,網(wǎng)絡(luò)恢復(fù)后仍使用原有資源進(jìn)行連接,如果連接超時(shí),客戶端將立即再次發(fā)起連接。該方案可以保證實(shí)時(shí)性,雖然也會消耗電量和流量,但可以從設(shè)計(jì)上進(jìn)行優(yōu)化,將信息推送損耗降至較低水平,另外還要保證消息一定要能夠到達(dá)客戶端,這個約束對于網(wǎng)絡(luò)不穩(wěn)定、終端設(shè)備內(nèi)存資源有限的移動互聯(lián)網(wǎng)來說至關(guān)重要。

對比上述幾套方案,選取最后一套方案,基于消息隊(duì)列遙測傳輸協(xié)議(MQTT)來實(shí)現(xiàn)。

源于IBM公司MQTT的設(shè)計(jì)思想是“發(fā)布—訂閱”模式??蛻舳瞬恢苯优c服務(wù)器交互,在兩者之間架設(shè)代理服務(wù)器(Proxy Server),從而做到應(yīng)用程序與服務(wù)程序松耦合。

如圖1所示,MQTT協(xié)議的基本工作過程是:首先,Proxy Server作為broker角色開啟服務(wù),然后客戶端與Broker創(chuàng)建連接并長時(shí)間維持連接,“訂閱”(準(zhǔn)備接收特定的信息)已設(shè)定好的“主題”(Topic)。接下來,推送服務(wù)控制端與Broker創(chuàng)建連接,“發(fā)布”(推送特定的信息)已經(jīng)編輯好的推送信息,該信息一旦“發(fā)布”成功,該連接即斷開。最后,Broker將該信息推送至客戶端,客戶端接收成功后將其按照設(shè)定好的規(guī)則顯示出來。

2系統(tǒng)總體設(shè)計(jì)

信息內(nèi)容主要包括兩種形式,一是信息內(nèi)容的全部具體信息,另一種形式則是信息的主要內(nèi)容或者信息目錄索引,由接受信息對象按照推送的通知,查詢具體信息內(nèi)容[5]。本系統(tǒng)推送的信息以后者的形式實(shí)現(xiàn)。

信息推送服務(wù)系統(tǒng)由3個子系統(tǒng)組成,分別是信息推送服務(wù)控制端、信息代理服務(wù)器、手機(jī)APP客戶端。

信息推送服務(wù)控制端和信息代理服務(wù)器運(yùn)行在同一個物理服務(wù)器上。該物理服務(wù)器是自購服務(wù)器,安裝Windows2008 Server操作系統(tǒng),由第三方數(shù)據(jù)中心托管,固定國際互聯(lián)網(wǎng)IP v4地址。管理員從外部接入國際互聯(lián)網(wǎng)通過瀏覽器訪問該服務(wù)器。系統(tǒng)在推廣試用階段數(shù)據(jù)量不是很大,因此選擇性能較穩(wěn)定,操作和配置都較靈活的MySql數(shù)據(jù)庫[6]。服務(wù)控制端使用跨平臺的PHP腳本語言開發(fā),管理員用瀏覽器即可操作,無需安裝繁瑣的控制軟件。

在早些時(shí)候,隨著MQTT協(xié)議的出現(xiàn),IBM公司為應(yīng)用該協(xié)議,編寫了RSMB組件。該組件有多種形式,可運(yùn)行于Windows、Linux等操作系統(tǒng),但是它沒有考慮用戶訪問的安全性,并且未開源。在搭建信息代理服務(wù)器時(shí),最初選用的也是RSMB組件,進(jìn)一步完善修改后,最終選用開源的、支持安全訪問的Mosquitto組件作為Broker角色來實(shí)現(xiàn)信息代理服務(wù)。

手機(jī)APP客戶端基于安卓(Android)操作系統(tǒng)設(shè)計(jì)。雖然Android 用的是Linux內(nèi)核[7],使用C、C++開發(fā)APP軟件效率高,但是信息推送服務(wù)主要關(guān)注點(diǎn)在應(yīng)用層,不過多考慮底層的硬件接口、驅(qū)動,因此在開發(fā)手段上采用基于Java虛擬機(jī)的SDK實(shí)時(shí)運(yùn)行環(huán)境。APP與用戶交互的主界面使用Android的Layout相對布局,查看推送信息的詳細(xì)內(nèi)容使用WebView組件加載HTML5響應(yīng)式網(wǎng)頁進(jìn)行瀏覽。

3信息推送服務(wù)控制端設(shè)計(jì)

管理員登錄系統(tǒng)采用Ajax設(shè)計(jì)理念,更新登錄信息輸入狀態(tài)而不刷新頁面。

配置信息推送Broker參數(shù)的源代碼如下:參數(shù)值的含義如下:

cishu=0 表示推送最新的信息。

cishu=1 表示推送其次新的信息。

cishu=2 表示推送從時(shí)間順序上排在第3的信息(也就是在歷史信息表中第3行的信息)。

cishu=3 表示更早的信息(也就是在歷史信息表中第4行的信息)。

以此類推,最大參數(shù)為cishu=9,也即本系統(tǒng)可以重新推送以前推送過的10條信息。

(3)填寫任意網(wǎng)址,推送的信息將會鏈接到該網(wǎng)址上。注意網(wǎng)址必須以帶問號的參數(shù)結(jié)尾。

例如http://192.168.1.88/index.asp?mk=9

或者h(yuǎn)ttp://192.168.1.66/?t=23

如果沒有參數(shù),任意添加一個即可。

4信息代理服務(wù)器設(shè)計(jì)

Broker底層網(wǎng)絡(luò)協(xié)議為TCP/IP,主要函數(shù)類包括:消息訂閱及發(fā)布類、創(chuàng)建、斷開連接類、連接狀態(tài)監(jiān)測類、日志類等。數(shù)據(jù)幀頭部采用固定格式,2字節(jié)(16位),包含信息類型、QoS、信息長度數(shù)、標(biāo)志位等內(nèi)容。

處理推送信息的服務(wù)質(zhì)量(QoS)設(shè)計(jì)為3種:①Q(mào)oS=0,信息最多傳送一次,因此信息有可能丟失或者重復(fù)推送;②QoS=1,信息最少傳送一次,因此信息有可能重復(fù)推送,但不會丟失;③QoS=2,信息有且只傳送一次,因此信息既不會丟失也不會重復(fù)推送。

連接狀態(tài)模式設(shè)計(jì)為兩種:①cleanSession=true,對應(yīng)客戶端參數(shù)Clean_START=true,僅在連接會話的作用域內(nèi)創(chuàng)建“訂閱”和“發(fā)布”信息,一旦連接斷開,該次“訂閱”就會失效,處于該次“訂閱”集中的“發(fā)布”信息將不會被推送,而新的“訂閱”集將會被創(chuàng)建,以后“發(fā)布”信息將會對應(yīng)于這個新的“訂閱”集;②cleanSession=false,對應(yīng)客戶端參數(shù)Clean_START=false,“訂閱”信息是持久的。Broker與客戶端之間可以連接,也可以斷開,而其“訂閱”一直保持活動狀態(tài),即“訂閱”集保持不變,當(dāng)Broker與客戶端重新連接時(shí),客戶端將接收任何未傳遞的“發(fā)布”信息。

5手機(jī)APP客戶端設(shè)計(jì)

5.1信息推送顯示形式

考慮信息推送的早期雛形,Email發(fā)信者將信發(fā)送給接收者。當(dāng)接收者打開瀏覽器登錄到郵箱后,瀏覽器會自動彈出通知欄,告知接收者已經(jīng)有幾封郵件到達(dá),并顯示郵件標(biāo)題,接收者點(diǎn)擊郵件標(biāo)題即可打開郵件瀏覽全文。本文系統(tǒng)APP客戶端也按這樣的思路進(jìn)行設(shè)計(jì)。

客戶端接收到的信息以圖標(biāo)的形式顯示在Android的通知區(qū)域(Notification),用戶向下滑動該圖標(biāo),展開Notification,看到信息標(biāo)題。按照推送信息的接收順序,用戶最多可以看到最新推送來的前5條信息的標(biāo)題。用戶點(diǎn)擊其中一條信息的標(biāo)題,即可查看信息的詳細(xì)內(nèi)容。

5.2識別字符串連接算法

不同的連接由不同的連接識別字符串區(qū)分,連接識別字符串由兩部分構(gòu)成,即Topic+用戶識別碼。

Topic按照特定的人群區(qū)分:教師群、學(xué)生群、領(lǐng)導(dǎo)群、VIP群(在生活或者學(xué)業(yè)上需要特別照顧幫扶的個別人群)。向教師群推送教務(wù)信息,向?qū)W生群推送課程資料、考試信息,向領(lǐng)導(dǎo)群推送管理決策信息,向VIP群推送幫扶信息。

Topic相同,必須要有不用的用戶識別碼。本系統(tǒng)在最初設(shè)計(jì)時(shí)使用Android的系統(tǒng)參數(shù)ANDROID_ID,但在實(shí)際使用中發(fā)現(xiàn)ANDROID_ID有較大的重復(fù)概率,因此改用存儲在用戶手機(jī)SIM卡中的國際移動用戶識別碼(IMSI)[8]。

5.3再次連接間隔時(shí)間算法

設(shè)Tst為服務(wù)開始的時(shí)刻,Trval為已設(shè)定的初始再次連接間隔時(shí)間,Tmaxr為已設(shè)定的再次連接最長間隔時(shí)間,Tnow為連接斷開的時(shí)刻,Telap為從服務(wù)開始到本次連接斷開的時(shí)間,Taval為優(yōu)化后的再次連接間隔時(shí)間,則有如下迭代算法:

Telap=Tnow-Tst(1)

Taval=Trval,Telap≥Trval

min(4*Trval,Tmaxr),Telap

將Taval的值保存起來(使用Android便捷的SharedPreference數(shù)據(jù)存儲方式進(jìn)行保存),下次連接斷開時(shí),將其作為新的初始再次連接間隔時(shí)間代入算法進(jìn)行計(jì)算。

5.4Activity跳轉(zhuǎn)WebView URl鏈接算法

客戶端調(diào)用Android里的WebView組件顯示Html5網(wǎng)頁內(nèi)容,WebView組件所在的Activity記為“WebActivity”??蛻舳颂D(zhuǎn)到WebActivity有3個來源:①從服務(wù)控制端直接輸入U(xiǎn)RL鏈接地址;②信息標(biāo)題Activity默認(rèn)跳轉(zhuǎn)的URl鏈接地址;③APP主界面默認(rèn)跳轉(zhuǎn)的URL鏈接地址。

為了區(qū)分上述3種情況,設(shè)置了2個字符串變量“biaozhi”和“l(fā)ianjiedata”,“biaozhi”由程序直接賦值,“l(fā)ianjiedata”為截取的URL鏈接字符串。對于第一種情況,從收到的推送信息中根據(jù)標(biāo)識符“,f,”截取,然后在后面加上MISI號參數(shù)。因?yàn)槭褂谩癎ET”形式傳遞參數(shù),URL語法格式必須符合規(guī)范,鏈接地址和參數(shù)之間用“?”隔開,多個參數(shù)之間用“&”隔開,所以在服務(wù)控制端輸入連接地址時(shí)才有前述特殊要求。對于第二種情況,直接截取默認(rèn)URL鏈接字符串http://wuguohui.com/index.php?cishu=0, 對于第三種情況,直接截取默認(rèn)URL鏈接字符串http://wuguohui.com/mgq/index.html。

如果“biaozhi”為空,“l(fā)ianjiedata”不為空,則判斷為第一種情況;如果“biaozhi”為空,且“l(fā)ianjiedata”也為空,則判斷為第二種情況;如果“biaozhi”不為空,則判斷為第三種情況。

5.5增強(qiáng)用戶體驗(yàn)設(shè)計(jì)

(1)服務(wù)啟動/停止。在長期的推廣使用中,不至于讓用戶反感,服務(wù)設(shè)計(jì)為可由用戶隨意開啟或者停止。在服務(wù)被用戶停止或者網(wǎng)絡(luò)中斷期間,如果有信息被推送過來,用戶將不能接收。離線推送功能可以保證這些信息在用戶再次開啟服務(wù)或者網(wǎng)絡(luò)恢復(fù)后可以立即被送達(dá)用戶。

(2)按鈕操作語音提示。為了提升用戶體驗(yàn)效果,加入按鈕操作語音提示功能。用戶點(diǎn)擊按鈕,同時(shí)自動播放預(yù)先存儲的語音提示。為了縮短播放延遲,本系統(tǒng)調(diào)用Android的SoundPool類來實(shí)現(xiàn)。本系統(tǒng)還設(shè)計(jì)了一個音頻文件加載“監(jiān)聽器”,保證語音提示加載完成之后才能調(diào)用SoundPool類,以防止出現(xiàn)加載空值錯誤。

(3)開機(jī)自動啟動。本系統(tǒng)“截獲”Android啟動時(shí)發(fā)出的系統(tǒng)廣播,繼承BroadcastReceiver類,重寫onReceive方法,當(dāng)接收到的Intent符合ACTION_BOOT_COMPLETED(即系統(tǒng)廣播的內(nèi)容)時(shí),啟動本系統(tǒng)的首個Activity。

6系統(tǒng)調(diào)試及運(yùn)行

6.1參數(shù)配置

6.2APP客戶端調(diào)試

下載APP客戶端的apk安裝包至Android手機(jī)進(jìn)行安裝。安裝完成后,打開APP,首先輸入用戶授權(quán)碼,只需要輸入一次,授權(quán)信息將會被保存,再次打開APP,直接運(yùn)行。APP客戶端運(yùn)行后的界面如圖2所示。

7結(jié)語

本系統(tǒng)的服務(wù)控制權(quán)完全在管理者手中,可以統(tǒng)計(jì)用戶對信息接收情況的反饋(依據(jù)設(shè)備識別碼唯一性),準(zhǔn)確掌握用戶對信息效果的反應(yīng)情況。它不僅能做到大面積統(tǒng)一推送,還可以做到定點(diǎn)準(zhǔn)確推送。對信息區(qū)分各類人群(依據(jù)安裝不同客戶端的主題分類),不同信息有選擇地推送給不同的人群。本系統(tǒng)具有操作簡單、實(shí)用方便、適用廣泛、節(jié)省網(wǎng)絡(luò)流量和電池電量的特點(diǎn),可以推送文字、圖片等多種形式,自動提醒用戶,只要用戶手機(jī)可上網(wǎng),每個用戶能夠幾乎同時(shí)實(shí)時(shí)收到信息,還可以靈活用于發(fā)布各種通知、宣傳文件精神、發(fā)布便民生活消息、轉(zhuǎn)發(fā)時(shí)事新聞和網(wǎng)頁鏈接、聯(lián)絡(luò)人員、休閑娛樂、統(tǒng)計(jì)數(shù)據(jù)等。如果將信息服務(wù)質(zhì)量(QoS)設(shè)置為0,本系統(tǒng)可以應(yīng)用到物聯(lián)網(wǎng)通信中,例如在智能家居環(huán)境下,將傳感器監(jiān)測到的家用機(jī)器人的工作狀態(tài)推送到辦公室里的PDA上并顯示出來。后續(xù)工作還需要美化人機(jī)交互界面,形成更加人性化的布局。

圖2APP客戶端運(yùn)行界面圖3編輯、推送信息

參考文獻(xiàn):

[1]閔慶飛,王菊,劉振華.移動系統(tǒng)可用性綜合研究框架[J].計(jì)算機(jī)應(yīng)用研究,2012,29(2):421426.

[2]曉丹.CNNIC第35次《中國互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》中國手機(jī)網(wǎng)民達(dá)5.57億[EB/OL].[20150718] http://www.guancha.cn/Science/2015_02_04_308533.shtml.

[3]中國互聯(lián)網(wǎng)信息中心.CNNIC手機(jī)娛樂報(bào)告:網(wǎng)民平均每天“玩手機(jī)”158分鐘[EB/OL].[20150718] http://www.cnnic.net.cn/gywm/xwzx/rdxw/2015/201507/t20150710_52527.htm.

[4]張?jiān)绿?,鄔偉,曾欣.當(dāng)前互聯(lián)網(wǎng)幾種信息推送技術(shù)及其評析[J].云南農(nóng)業(yè)大學(xué)學(xué)報(bào),2009,3(2):115119.

[5]李博,黃芳.信息推送技術(shù)在企業(yè)中的應(yīng)用研究[J].電腦知識與技術(shù),2013,9(6):15451547.

[6]蔣黎黎,梁坤,葉爽.基于粒度計(jì)算理論的知識融合模型研究[J].計(jì)算機(jī)應(yīng)用研究,2012,29(10):36973700.

[7]楊海民,張濤,趙敏,等.基于Android的BSP移植自動適配技術(shù)[J].計(jì)算機(jī)工程,2014,40(11):245249.

[8]何平,肖海,劉兆元,等.LTE終端多模選網(wǎng)關(guān)鍵技術(shù)分析[J].電信科學(xué),2012(12):131134.

責(zé)任編輯(責(zé)任編輯:孫娟)

猜你喜歡
移動互聯(lián)網(wǎng)
微美學(xué)
大數(shù)據(jù)環(huán)境下基于移動客戶端的傳統(tǒng)媒體轉(zhuǎn)型思路
基于移動互聯(lián)網(wǎng)的心理健康教育初探
徐汇区| 大庆市| 凤山县| 平罗县| 怀安县| 福贡县| 安福县| 正镶白旗| 富顺县| 晋中市| 涟源市| 曲周县| 苍南县| 东山县| 墨玉县| 睢宁县| 建阳市| 庆元县| 南康市| 铜梁县| 德庆县| 福州市| 喀什市| 洛阳市| 繁峙县| 历史| 湘阴县| 丽水市| 文山县| 长宁区| 乌恰县| 色达县| 乐清市| 巴楚县| 丰都县| 南开区| 耒阳市| 察隅县| 闻喜县| 晋中市| 佛学|