消息推送方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,具體涉及一種消息推送方法及系統(tǒng)。
【背景技術(shù)】
[0002] 移動(dòng)互聯(lián)網(wǎng)是當(dāng)今世界發(fā)展最快、市場(chǎng)潛力最大、前景最誘人的劃時(shí)代產(chǎn)業(yè),正逐 漸改變?nèi)藗兊纳钆c工作方式互聯(lián)網(wǎng)。移動(dòng)互聯(lián)網(wǎng)與傳統(tǒng)互聯(lián)網(wǎng)行業(yè)最大的不同是移動(dòng)的 特性,而消息推送是移動(dòng)應(yīng)用最重要的功能之一,是實(shí)現(xiàn)移動(dòng)業(yè)務(wù)實(shí)時(shí)、準(zhǔn)確地傳遞信息給 有效客戶群的最好方式。
[0003] 現(xiàn)有技術(shù)中,消息推送常見的模式有:(1) "網(wǎng)播",可以認(rèn)為是廣播模式在互聯(lián)網(wǎng) 的應(yīng)用和發(fā)展。這種模式及時(shí)性好,信源及時(shí)地向用戶推送不斷更新的動(dòng)態(tài)消息。因?yàn)槭?用廣播模式相同消息只需發(fā)送一條消息,訂閱用戶均收到消息。(2) "發(fā)送-應(yīng)答":該模式 針對(duì)用戶定制化需求,消息發(fā)送給指定用戶,而且為了確定消息到達(dá),需要客戶端收到服務(wù) 端的消息后"應(yīng)答",告知服務(wù)端消息確認(rèn)到達(dá),否則服務(wù)端會(huì)再次重新發(fā)送該消息。
[0004] "網(wǎng)播"沒有針對(duì)性,對(duì)推送消息是否及時(shí)準(zhǔn)確到達(dá)指定用戶沒有保障,不能滿足 客戶個(gè)性需求的定制化,且不能確保消息在特殊情況的準(zhǔn)確到達(dá)以及重新發(fā)送。"發(fā)送-應(yīng) 答"對(duì)每次的消息均需要"發(fā)送-等待應(yīng)答-應(yīng)答"的過程,當(dāng)有多條消息需要發(fā)送時(shí),消息 發(fā)送效率低下,不能及時(shí)地向用戶推送不斷更新的動(dòng)態(tài)消息。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明所要解決的技術(shù)問題是如何實(shí)現(xiàn)消息準(zhǔn)確高效的到達(dá)客戶端。
[0006] 為此目的,本發(fā)明提出了一種消息推送方法,該方法包括:獲取消息,并根據(jù)時(shí)間 先后對(duì)所述消息編號(hào)得到編號(hào)消息;
[0007] 從預(yù)先存儲(chǔ)的客戶端列表中獲取客戶端;
[0008] 向所述客戶端發(fā)送所述編號(hào)消息;
[0009] 所述客戶端接收所述編號(hào)消息并做出應(yīng)答;
[0010] 當(dāng)有多條編號(hào)消息需要發(fā)送時(shí),所述客戶端對(duì)第一條和最后一條編號(hào)消息做出應(yīng) 答。
[0011] 優(yōu)選地,所述客戶端接收所述編號(hào)消息并做出應(yīng)答還包括:記錄接收所述編號(hào)消 息的時(shí)間戳。
[0012] 優(yōu)選地,所述向所述客戶端發(fā)送所述編號(hào)消息之后還包括:
[0013] 所述客戶端無應(yīng)答,服務(wù)端將所述消息標(biāo)記為離線消息;
[0014] 所述客戶端再次上線時(shí),所述客戶端獲取本地時(shí)間戳,并根據(jù)所述接受消息的時(shí) 間戳去所述服務(wù)端讀取所述離線消息,并作出應(yīng)答。
[0015] 優(yōu)選地,該方法還包括:若所述接收消息的時(shí)間戳為空,所述客戶端讀取所有所述 離線消息。
[0016] 優(yōu)選地,所述客戶端讀取所述離線消息后,還包括:
[0017] 將狀態(tài)修改為在線,不再讀取離線消息。
[0018] 優(yōu)選地,所述獲取消息后,將所述消息保存在服務(wù)端的緩存中。
[0019] 優(yōu)選地,所述客戶端接收所述編號(hào)消息并做出應(yīng)答之后還包括:服務(wù)端刪除所述 應(yīng)答后的消息。
[0020] 另一方面,本發(fā)明還提供了一種消息推送系統(tǒng),該系統(tǒng)包括:服務(wù)端和客戶端;
[0021] 所述服務(wù)端與所述客戶端通信連接;
[0022] 所述服務(wù)端獲取消息,并根據(jù)時(shí)間先后對(duì)所述消息進(jìn)行編號(hào)得到編號(hào)消息;所述 服務(wù)端從預(yù)先存儲(chǔ)的客戶端列表中獲取客戶端;所述服務(wù)端按編號(hào)向所述客戶端發(fā)送所述 編號(hào)消息;
[0023] 所述客戶端接收所述編號(hào)消息并做出應(yīng)答;
[0024] 所述客戶端接收到有多條消息時(shí),所述客戶端對(duì)第一條和最后一條消息做出應(yīng) 答。
[0025] 優(yōu)選地,所述客戶端包括時(shí)間戳記錄單元,所述時(shí)間戳記錄單元用于記錄接收所 述編號(hào)消息的時(shí)間戳。
[0026] 優(yōu)選地,所述服務(wù)端包括消息發(fā)送記錄單元,所述消息發(fā)送記錄單元用于在所述 服務(wù)端按編號(hào)向所述客戶端發(fā)送所述編號(hào)后的消息后,記錄所述客戶端的應(yīng)答狀態(tài);如果 所述客戶端無應(yīng)答,所述服務(wù)端將所述編號(hào)后的消息標(biāo)記為離線消息;
[0027] 所述客戶端包括消息讀取單元,所述消息讀取單元用于在所述客戶端再次上線 時(shí),獲取本地時(shí)間戳,并根據(jù)所述接收編號(hào)后的消息的時(shí)間戳去所述服務(wù)端讀取所述離線 消息,并作出應(yīng)答。
[0028] 通過采用本發(fā)明所公開的消息推送方法及系統(tǒng),不再針對(duì)每條消息一一應(yīng)答,當(dāng) 客戶端接收多條消息時(shí),只對(duì)第一條以及最后一條消息做出應(yīng)答,應(yīng)答第一條消息為了表 示客戶端在線,應(yīng)答最后一條消息表示在最后一條消息之前的消息均已收到,既保障了消 息的到達(dá)率又解決了每條消息必須應(yīng)答帶來效率低下問題,實(shí)現(xiàn)了消息準(zhǔn)確高效到達(dá)客戶 端的目的;此外在客戶端不在線時(shí)能夠在下次上線時(shí)讀取離線消息,每條消息都確認(rèn)應(yīng)答 后刪除,所以在其他客戶端處理的信息不會(huì)被客戶端接收為離線信息,這樣保障了用戶消 息不在線時(shí)消息也不會(huì)丟失,已經(jīng)接收的消息不會(huì)重復(fù)接受,不僅方便用戶的使用,還能夠 節(jié)省數(shù)據(jù)傳輸資源。
【附圖說明】
[0029] 通過參考附圖會(huì)更加清楚的理解本發(fā)明的特征和優(yōu)點(diǎn),附圖是示意性的而不應(yīng)理 解為對(duì)本發(fā)明進(jìn)行任何限制,在附圖中:
[0030] 圖1示出了本發(fā)明多條消息推送方法的流程示意圖;
[0031] 圖2示出了本發(fā)明多條消息應(yīng)答過程的示意圖;
[0032] 圖3示出了本發(fā)明客戶端在線消息推送過程的流程示意圖;
[0033] 圖4示出了本發(fā)明客戶端離線消息推送過程的流程示意圖。
【具體實(shí)施方式】
[0034] 下面將結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行詳細(xì)描述。
[0035] 如圖1所示本發(fā)明多條消息推送方法的流程圖,該方法包括:獲取消息,并根據(jù)時(shí) 間先后對(duì)所述消息編號(hào)得到編號(hào)消息;從預(yù)先存儲(chǔ)的客戶端列表中獲取客戶端;向所述客 戶端發(fā)送所述編號(hào)消息;所述客戶端接收所述編號(hào)消息并做出應(yīng)答;當(dāng)有多條編號(hào)消息需 要發(fā)送時(shí),所述客戶端對(duì)第一條和最后一條編號(hào)消息做出應(yīng)答。下面結(jié)合具體的實(shí)施例對(duì) 本發(fā)明提供的多條消息推送方法展開詳細(xì)說明。
[0036] 實(shí)施例1
[0037] 如圖1,2,3所示,本發(fā)明消息推送方法包括如下步驟:
[0038] 1)服務(wù)端獲取消息,服務(wù)端獲取消息后將消息保存在緩存中,緩存的作用是記錄 本次消息,然后對(duì)消息根據(jù)時(shí)間先后進(jìn)行編號(hào)得到編號(hào)消息(例如根據(jù)時(shí)間先后順序,依 次編號(hào)為100、101、102、103、……、N),編號(hào)消息保證消息的順序,群發(fā)模式采用同樣的流 程;
[0039] 2)服務(wù)端從預(yù)先存儲(chǔ)的客戶端列表中獲取客戶端。具體地,服務(wù)端獲取預(yù)先存儲(chǔ) 的客戶端列表中的客戶端信息(例如IP,移動(dòng)端tokey等)。客戶端列表一般由客戶端初 始安裝時(shí)獲取,當(dāng)客戶端變動(dòng)時(shí)會(huì)更新客戶端列表。3)客戶端通過socket(對(duì)TCP/IP協(xié)議 的封裝和應(yīng)用)監(jiān)聽本地端口(例如12010端口或12011端口)判斷是否有服務(wù)端過來連 接;
[0040] 3)服務(wù)端向客戶端發(fā)送編號(hào)消息中的第一條消息;
[0041] 4)客戶端接收第一條消息,記錄接收第一條消息的時(shí)間戳。消息接收完畢后客戶 端向服務(wù)端對(duì)第一條消息做出應(yīng)答,應(yīng)答內(nèi)容可以為當(dāng)前接收到的編號(hào)消息的編號(hào)(例如 100)。時(shí)間戳用于記錄當(dāng)前接收消息的正常接收時(shí)間;
[0042] 5)如果服務(wù)端只發(fā)送一條消息,服務(wù)端收到客戶端的對(duì)已經(jīng)收到的消息的應(yīng)答 后,服務(wù)端刪除緩存中已經(jīng)收到的消息;
[0043] 6)如果服務(wù)端有多條消息需要發(fā)送,服務(wù)端收到客戶端的對(duì)已經(jīng)收到的消息的應(yīng) 答后,服務(wù)端向客戶端依次發(fā)送其他的編號(hào)消息,并標(biāo)記最后一條消息;
[0044] 7)客戶端接收依次發(fā)送的其他編號(hào)消息,根據(jù)標(biāo)記判斷是否需要應(yīng)答,記錄接收 到每條消息的消息編號(hào)和消息的時(shí)間戳;
[0045] 8)客戶端接收最后一條消息,記錄接收最后一條消息的時(shí)間戳,應(yīng)答消息,應(yīng)答內(nèi) 容可以為最后一條消息的消息編號(hào),例如104;
[0046] 9)服務(wù)端收到應(yīng)答的消息編號(hào),根據(jù)消息編號(hào),刪除緩存中第一條至最后一條的 所有消息;
[004