一種向客戶端推送消息的方法
2023-06-01 06:27:01 1
一種向客戶端推送消息的方法
【專利摘要】本發明提供一種向客戶端推送消息的方法,包括:一種向客戶端推送消息的方法,應用於包括伺服器端和客戶端的通信系統中,其特徵在於,包括:所述客戶端創建連接線程的步驟;所述客戶端通過所述連接線程與所述伺服器建立持久連接的步驟;所述客戶端通過所述持久連接向所述伺服器註冊用戶的步驟;所述客戶端通過所述持久連接登錄所述伺服器的步驟;所述伺服器通過所述持久連接向所述客戶端推送消息的步驟。本發明的向智能客戶終端主動推送消息的方法成本低,消耗帶寬和電量小,並且消息更新及時。
【專利說明】一種向客戶端推送消息的方法
【技術領域】
[0001]本發明涉及一種推送消息的方法,特別是涉及一種向智能客戶端及時推送消息的方法。
【背景技術】
[0002]隨著使用智慧型手機的人越來越多,智慧型手機的處理能力越來越強大,智慧型手機聯網的需求越來越強,尤其是對推送消息的需求越來越強,比如實時更新消息,即時信息分享
坐坐寸寸o
[0003]常見的推送技術方案有如下幾種:
[0004]伺服器端通過SMS和客戶端的通信,這是一個可以實時操作的方案,不過成本較高,因為需要向運營商或者代理購買短消息發送網關。
[0005]客戶端定時訪問伺服器埠,主動定時獲取最新消息;這種方案需要考慮主動獲取信息的頻率,太快則消耗大量的帶寬和電量,太慢則導致消息不能及時更新。
【發明內容】
[0006]鑑於以上所述現有技術的缺點,本發明的目的在於提供一種向客戶端推送消息的方法,用於解決現有技術成本高,消耗帶寬和電量大或消息不能及時更新的問題。
[0007]為實現上述目的及其他相關目的,本發明提供一種向客戶端推送消息的方法,包括:一種向客戶端推送消息的方法,應用於包括伺服器端和客戶端的通信系統中,其特徵在於,包括:所述客戶端創建連接線程的步驟;所述客戶端通過所述連接線程與所述伺服器建立持久連接的步驟;所述客戶端通過所述持久連接向所述伺服器註冊用戶的步驟;所述客戶端通過所述持久連接登錄所述伺服器的步驟;所述伺服器通過所述持久連接向所述客戶端推送消息的步驟。
[0008]優選地,上述客戶端通過所述持久連接登錄所述伺服器的步驟與所述伺服器通過所述持久連接向所述客戶端推送消息的步驟之間,還包括所述客戶端註冊監聽器的步驟,所述監聽器監聽伺服器推送的數據包,再通知要進行顯示的程序。
[0009]更優選地,根據權利要求1所述的向客戶端推送消息的方法,其特徵在於,所述客戶端通過所述持久連接登錄所述伺服器的步驟與所述伺服器通過所述持久連接向所述客戶端推送消息的步驟之間,還包括設置連接監聽器的步驟,所述連接監聽器用於監聽所述持久連接的連接錯誤。
[0010]如上所述,本發明的向客戶端推送消息的方法,具有以下有益效果:向智能客戶終端主動推送消息的方法成本低,消耗帶寬和電量小,並且消息更新及時。
【專利附圖】
【附圖說明】
[0011]圖1顯示為本發明向客戶端推送消息的方法所用伺服器結構示意圖;
[0012]圖2顯示為本發明向客戶端推送消息的方法所用客戶端結構示意圖;[0013]圖3顯示為本發明向客戶端推送消息的方法流程圖。
【具體實施方式】
[0014]以下通過特定的具體實例說明本發明的實施方式,本領域技術人員可由本說明書所揭露的內容輕易地了解本發明的其他優點與功效。本發明還可以通過另外不同的【具體實施方式】加以實施或應用,本說明書中的各項細節也可以基於不同觀點與應用,在沒有背離本發明的精神下進行各種修飾或改變。
[0015]請參閱附圖。需要說明的是,本實施例中所提供的圖示僅以示意方式說明本發明的基本構想,遂圖式中僅顯示與本發明中有關的組件而非按照實際實施時的組件數目、形狀及尺寸繪製,其實際實施時各組件的型態、數量及比例可為一種隨意的改變,且其組件布局型態也可能更為複雜。
[0016]本發明的向智能機主動推送消息的方法應用於具有伺服器和以智慧型手機為代表的客戶端構成的系統中。下面結合圖1和圖2對伺服器端和客戶端的結構和工作過程分別進行介紹。首先參閱圖1,伺服器端包括三個模塊:
[0017]XMPP服務模塊,負責與客戶端通信,例如用戶註冊和身份認證,並發送推送通知消息;
[0018]Web服務模塊,包括一個HTTP伺服器,負責接收用戶的Web請求;
[0019]連接管理模塊,用於管理Socket連接。
[0020]其中XMPP服務模塊包括四個部分:會話(session)管理器,負責管理客戶端與伺服器之間的會話,比如連接斷開,刪除session以及建立連接,添加session等等;權限管理器,負責客戶端用戶認證管理;登錄狀態管理器,負責管理客戶端用戶的登錄狀態,以及通知管理器,負責實現伺服器向客戶端推送消息功能。
[0021]本例中,連接管理模塊及客戶端採用了 MINA框架來進行連接管理,由於客戶端與伺服器的信息往來(包括心跳包)都是通過Session傳遞的,MINA主要負責XMPP服務模塊的session創建、session開啟、session關閉、信息收取等客戶端與伺服器建立Socket連接。
[0022]下面對連接管理模塊的主要實現類進行介紹:
[0023]IOAcceptor類:監聽指定的埠,處理新的網絡連接;一旦一個新的連接到達後,IOAcceptor就產生一個session,後續所有從這個IP和埠發送過來的請求就將通過這個Session被處理。
[0024]PacketEncoder/Decoder類:在Session創建後,負責將後續所有的數據包放入過濾器鏈中,通過過濾器將原始的字節碼轉變成高層的對象。最後數據包或對象被傳送給Handler做業務邏輯處理;
[0025]下面參閱圖2,圖2顯示為客戶端結構框圖。本例中,客戶端由以下幾個模塊組成:
[0026]通信模塊,負責與伺服器建立通信,通過創建3個線程來進行處理。分別負責消息的發送、接收、心跳信息的發送;
[0027]解析模塊,主要用來解析XML數據流。根據解析元素不同類型封裝成不同的數據對象。
[0028]數據模塊,定義整個客戶端中大部分的數據類型和對象;[0029]加密模塊,對發送和接收的消息進行加解密,以確保通訊數據的安全。
[0030]下面結合圖3介紹客戶端連接伺服器的過程。本例中,使用XMPP協議,所以連接伺服器要分為三步:連接,註冊,登陸。可以用一個棧來保存要執行的任務,即ConnectTask,RegisterTask, LoginTask,之後各模塊再從該棧中領取任務執行,這樣就可以使任務得到有序執行。圖3中,步驟SI表示伺服器端創建通知線程。本例中,客戶端的通信模塊包括通知服務類,該通知服務類創建一個單線程,讓其對伺服器進行連接。
[0031]步驟S2表示連接伺服器,本例中,連接伺服器用的是Executors.newSingleThreadExecutor 方法,從而可以連續提交任務。
[0032]步驟S3表示註冊用戶。
[0033]步驟S4表示用戶登錄,即執行LoginTask。本例中,在LoginTask裡,客戶端通信模塊登陸了伺服器端後,註冊一個監聽器,用於監聽伺服器push的數據包(Packet),再通過發送廣播的方式來通知要進行顯示的程序。
[0034]步驟S5表示判斷連接是否成功,如果未成功則返回步驟SI重新建立連接。連接線程在連接,註冊,登陸的過程中,都有可能出錯,都可能會失敗,這就需要一種重連的機制。本例中,通過在Androidpn裡建立新線程來進行重試,其重試可以按照如下規則:客戶端成功連接伺服器後,伺服器會建立一個唯一 session保持與客戶端連接,如果是連接過程出現連接失敗,直接返回步驟SI重新建立連接即可;如果是註冊、登錄過程出現連接失敗,則客戶端直接帶著session ID與伺服器進行連接。
[0035]步驟S6表示連接建立成功後,伺服器可以隨時向客戶端推送消息。
[0036]上述步驟中,登陸伺服器後,也有可能出錯,所以本例中,在登陸後會設置一個連接監聽器,用於監聽連接出錯的時候進行重連。
[0037]另外,在登陸過程中,還可以包括登錄錯誤處理步驟。如果登錄出錯的原因是帳號和密碼無效,則應該把客戶端本地保存的帳號和密碼都清掉,再重新進行連接,否則會永遠都登陸不上伺服器端。可以通過判斷伺服器端返回的操作碼來判斷登錄出錯的原因,本例中,如果用戶名密碼無效導致登錄操作出錯,則伺服器返回操作碼401。
[0038]需要說明的是,上述實施例雖然基於智慧型手機作為客戶端,但本發明的思想並不局限於此。實際應用中,客戶端可以是軟體,並且可以安裝於多種硬體平臺上,比如普通個人電腦、筆記本或者平板電腦等等。
[0039]綜上所述,本發明的向智能客戶終端主動推送消息的方法成本低,消耗帶寬和電量小,並且消息更新及時。所以,本發明有效克服了現有技術中的種種缺點而具高度產業利用價值。
[0040]上述實施例僅例示性說明本發明的原理及其功效,而非用於限制本發明。任何熟悉此技術的人士皆可在不違背本發明的精神及範疇下,對上述實施例進行修飾或改變。因此,舉凡所屬【技術領域】中具有通常知識者在未脫離本發明所揭示的精神與技術思想下所完成的一切等效修飾或改變,仍應由本發明的權利要求所涵蓋。
【權利要求】
1.一種向客戶端推送消息的方法,應用於包括伺服器端和客戶端的通信系統中,其特徵在於,包括: 所述客戶端創建連接線程的步驟; 所述客戶端通過所述連接線程與所述伺服器建立持久連接的步驟; 所述客戶端通過所述持久連接向所述伺服器註冊用戶的步驟; 所述客戶端通過所述持久連接登錄所述伺服器的步驟; 所述伺服器通過所述持久連接向所述客戶端推送消息的步驟。
2.根據權利要求1所述的向客戶端推送消息的方法,其特徵在於,所述客戶端通過所述持久連接登錄所述伺服器的步驟與所述伺服器通過所述持久連接向所述客戶端推送消息的步驟之間,還包括所述客戶端註冊監聽器的步驟,所述監聽器監聽伺服器推送的數據包,再通知要進行顯示的程序。
3.根據權利要求1所述的向客戶端推送消息的方法,其特徵在於,所述客戶端通過所述持久連接登錄所述伺服器的步驟與所述伺服器通過所述持久連接向所述客戶端推送消息的步驟之間,還包括設置連接監聽器的步驟,所述連接監聽器用於監聽所述持久連接的連接錯誤。
4.根據權利要求1所述的向客戶端推送消息的方法,其特徵在於,所述客戶端通過所述持久連接登錄所述伺服器的步驟中還包括登錄錯誤處理的步驟,所述登錄錯誤處理的步驟包括:如果所述登錄錯誤處理是由於用戶名密碼錯誤引發,則清除客戶端本地保存的用戶名和密碼。
5.根據權利要求1所述的向客戶端推送消息的方法,其特徵在於,所述客戶端通過所述持久連接登錄所述伺服器的步驟與所述伺服器通過所述持久連接向所述客戶端推送消息的步驟之間,還包括判斷所述持久連接是否出錯的步驟,如果所述持久連接出錯,則執行重連。
【文檔編號】H04L12/58GK103618665SQ201310666387
【公開日】2014年3月5日 申請日期:2013年12月10日 優先權日:2013年12月10日
【發明者】苗帥, 鄭松, 黃志華 申請人:南京守護寶信息技術有限公司