本發明涉及計算機技術領域,具體而言,本發明涉及一種發送離線消息的方法及一種發送離線消息的裝置。
背景技術:
隨著計算機技術的發展,各種終端設備已成為人們生活中必不可少的工具,各種功能強大的終端操作系統及終端應用程序不斷涌現,為用戶帶來了更加便捷的體驗。當前的信息交互頻率不斷增多,終端應用程序與服務端或其他終端的交互數據信息也日益增多。
在現有的信息傳遞架構下,當用戶在終端應用程序中處于在線狀態時,可以實時地接收到服務端或其他終端向其發送數據信息,當用戶在終端應用程序中處于離線狀態時,即終端應用程序未被啟動運行,因此不能實時地接收到服務端或其他終端向其發送數據信息,隨后在用戶啟動進入終端應用程序后,將獲取應用程序在離線期間接收到的全部的離線數據。現有技術中,一般服務端將離線數據發送至終端后即會將離線數據進行刪除,但是在離線數據量較大的情況下,一方面,在向終端發送離線數據的過程中往往會發生鏈接中斷的情況,從而容易發生刪除終端未接收到的離線數據的情況,導致離線數據的丟失;另一方面,在接收到離線數據獲取請求后,若無法查找到相對應的某個離線數據時,將導致剩余的接收到離線數據獲取請求對應的離線數據處于排隊等待狀態,無法及時將剩余的離線數據發送至終端應用程序。
因此,需要一種發送離線數據的方案,來解決現有技術中數據發送過程中離線數據丟失的情況以及發送離線數據的過程中容易產生堵塞的問題。
技術實現要素:
為克服上述技術問題或者至少部分地解決上述技術問題,特提出以下技術方案:
本發明的實施例提出了一種發送離線消息的方法,包括:
依據接收到的數據獲取請求確定對應的多個離線數據;
將多個離線數據中的至少兩個并行發送至對應的至少兩個請求方;
接收請求方返回的針對任一離線數據的反饋信息;
依據反饋信息判斷請求方是否已正確接收到任一離線數據;
依據判斷結果針對任一離線數據執行相應的處理操作。
優選地,將多個離線數據中的至少兩個并行發送至對應的至少兩個請求方,包括:
將至少兩個離線數據通過同一長連接并行發送至對應的至少兩個請求方。
優選地,依據判斷結果針對任一離線數據執行相應的處理操作,包括以下任一項:
若判斷結果為任一離線數據被正確接收,刪除任一離線數據;
若判斷結果為任一離線數據未被正確接收,重新將任一離線數據發送至請求方。
可選地,還包括:
依據預定的數據簽名生成方式,對多個離線數據進行簽名;
其中,將多個離線數據中的至少兩個并行發送至請求方,包括:
將多個離線數據中的至少兩個及各自相應的數據簽名并行發送至請求方;
其中,請求方返回的反饋信息中包括接收方根據接收到的任一離線數據生成的待驗證數據簽名;
其中,依據反饋信息判斷請求方是否已正確接收任一離線數據,包括:
比對反饋信息中的待驗證數據簽名與任一離線數據對應的數據簽名是否一致來判斷請求方是否已正確接收到任一離線數據。
可選地,還包括:
將多個離線數據存儲至預定的緩存區域中,并將多個離線數據存儲至預建立的數據庫中;
其中,對多個離線數據進行簽名的步驟之后,還包括:
將與多個離線數據對應的數據簽名存儲至預定的緩存區域中;
其中,依據反饋信息判斷請求方是否已接收到正確的任一離線數據的步驟之前,包括:
從緩存區域中提取反饋信息對應的離線數據的數據簽名。
優選地,若判斷結果為任一離線數據被正確接收,刪除任一離線數據,包括:
若判斷結果為任一離線數據被正確接收,刪除預定的緩存區域中任一離線數據及相應的數據簽名的數據信息,并刪除預建立的數據庫中任一離線數據的數據記錄。
優選地,若判斷結果為任一離線數據未被正確接收,重新將任一離線數據發送至請求方,包括:
若判斷結果為任一離線數據未被正確接收,刪除預定的緩存區域中任一離線數據及相應的數據簽名的數據信息;
在預建立的數據庫中重新獲取任一離線數據的數據記錄,并存儲至預定的緩存區域;
將重新獲取到的任一離線數據發送至請求方。
可選地,方法還包括:
依據預定的數據簽名生成方式,對重新發送的任一離線數據進行簽名;
將與任一離線數據對應的數據簽名存儲至預定的緩存區域中。
本發明的另一實施例提出了一種發送離線消息的裝置,包括:
確定模塊,用于依據接收到的數據獲取請求確定對應的多個離線數據;
發送模塊,用于將多個離線數據中的至少兩個并行發送至對應的至少兩個請求方;
接收模塊,用于接收請求方返回的針對任一離線數據的反饋信息;
判斷模塊,用于依據反饋信息判斷請求方是否已正確接收到任一離線數據;
執行模塊,用于依據判斷結果針對任一離線數據執行相應的處理操作。
優選地,發送模塊,包括:
第一發送單元,用于將至少兩個離線數據通過同一長連接并行發送至對應的至少兩個請求方。
優選地,執行模塊,包括以下任一項:
若判斷結果為任一離線數據被正確接收,刪除任一離線數據;
若判斷結果為任一離線數據未被正確接收,重新將任一離線數據發送至請求方。
可選地,還包括:
第一簽名模塊,用于依據預定的數據簽名生成方式,對多個離線數據進行簽名;
其中,發送模塊用于將多個離線數據中的至少兩個及各自相應的數據簽名并行發送至請求方;
其中,請求方返回的反饋信息中包括接收方根據接收到的任一離線數據生成的待驗證數據簽名;
其中,判斷模塊用于比對反饋信息中的待驗證數據簽名與任一離線數據對應的數據簽名是否一致來判斷請求方是否已正確接收到任一離線數據。
可選地,還包括:
第一存儲模塊,用于將多個離線數據存儲至預定的緩存區域中,并將多個離線數據存儲至預建立的數據庫中;
其中,對多個離線數據進行簽名之后,還包括:
第二存儲模塊,用于將與多個離線數據對應的數據簽名存儲至預定的緩存區域中;
其中,依據反饋信息判斷請求方是否已接收到正確的任一離線數據之前,包括:
提取模塊,用于從緩存區域中提取反饋信息對應的離線數據的數據簽名。
優選地,若判斷結果為任一離線數據被正確接收,刪除任一離線數據,執行模塊包括:
第一刪除單元,用于若判斷結果為任一離線數據被正確接收,刪除預定的緩存區域中任一離線數據及相應的數據簽名的數據信息,并刪除預建立的數據庫中任一離線數據的數據記錄。
優選地,若判斷結果為任一離線數據未被正確接收,重新將任一離線數據發送至請求方,執行模塊包括:
第二刪除單元,用于若判斷結果為任一離線數據未被正確接收,刪除預定的緩存區域中任一離線數據及相應的數據簽名的數據信息;
獲取單元,用于在預建立的數據庫中重新獲取任一離線數據的數據記錄,并存儲至預定的緩存區域;
第二發送單元,用于將重新獲取到的任一離線數據發送至請求方。
可選地,還包括:
第二簽名模塊,用于依據預定的數據簽名生成方式,對重新發送的任一離線數據進行簽名;
第三存儲模塊,用于將與任一離線數據對應的數據簽名存儲至預定的緩存區域中。
本發明的實施例中,提出了一種發送離線消息的方案,依據接收到的數據獲取請求確定對應的多個離線數據;將多個離線數據中的至少兩個并行發送至對應的至少兩個請求方,實現了同時將離線數據及時地發送至各請求方,避免了各請求方同時請求獲取離線數據時可能會產生的其中至少一個請求方延遲接收離線數據的情況;接收請求方返回的針對任一離線數據的反饋信息,依據反饋信息判斷請求方是否已正確接收到任一離線數據,實現了準確地判斷請求方是否正確接收到任一離線數據,為后續針對任一離線數據執行相應的處理操作提供了必要的前提保障;依據判斷結果針對任一離線數據執行相應的處理操作,實現了根據不同的判斷結果,對任一離線數據執行不同的處理操作,避免了請求方在未接收到正確離線數據的情況下將離線數據進行刪除,而導致離線數據丟失的情況,進一步地,保證了請求方能夠接收到正確的離線數據。
本發明附加的方面和優點將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過本發明的實踐了解到。
附圖說明
本發明上述的和/或附加的方面和優點從下面結合附圖對實施例的描述中將變得明顯和容易理解,其中:
圖1為本發明中一個實施例的發送離線消息的方法的流程示意圖;
圖2為本發明中另一實施例的發送離線消息的裝置的結構示意圖。
具體實施方式
下面詳細描述本發明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發明,而不能解釋為對本發明的限制。
本技術領域技術人員可以理解,除非特意聲明,這里使用的單數形式“一”、“一個”、“所述”和“該”也可包括復數形式。應該進一步理解的是,本發明的說明書中使用的措辭“包括”是指存在所述特征、整數、步驟、操作、元件和/或組件,但是并不排除存在或添加一個或多個其他特征、整數、步驟、操作、元件、組件和/或它們的組。應該理解,當我們稱元件被“連接”或“耦接”到另一元件時,它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“耦接”可以包括無線連接或無線耦接。這里使用的措辭“和/或”包括一個或更多個相關聯的列出項的全部或任一單元和全部組合。
本技術領域技術人員可以理解,除非另外定義,這里使用的所有術語(包括技術術語和科學術語),具有與本發明所屬領域中的普通技術人員的一般理解相同的意義。還應該理解的是,諸如通用字典中定義的那些術語,應該被理解為具有與現有技術的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會用理想化或過于正式的含義來解釋。
圖1為本發明中一個實施例的發送離線消息的方法的流程示意圖。
本發明的實施例中,各步驟所執行的內容概述如下:步驟S110:依據接收到的數據獲取請求確定對應的多個離線數據;步驟S120:將多個離線數據中的至少兩個并行發送至對應的至少兩個請求方;步驟S130:接收請求方返回的針對任一離線數據的反饋信息;步驟S140:依據反饋信息判斷請求方是否已正確接收到任一離線數據;步驟S150:依據判斷結果針對任一離線數據執行相應的處理操作。
本發明的實施例中,提出了一種發送離線消息的方法,依據接收到的數據獲取請求確定對應的多個離線數據;將多個離線數據中的至少兩個并行發送至對應的至少兩個請求方,實現了同時將離線數據及時地發送至各請求方,避免了各請求方同時請求獲取離線數據時可能會產生的其中至少一個請求方延遲接收離線數據的情況;接收請求方返回的針對任一離線數據的反饋信息,依據反饋信息判斷請求方是否已正確接收到任一離線數據,實現了準確地判斷請求方是否正確接收到任一離線數據,為后續針對任一離線數據執行相應的處理操作提供了必要的前提保障;依據判斷結果針對任一離線數據執行相應的處理操作,實現了根據不同的判斷結果,對任一離線數據執行不同的處理操作,避免了請求方在未接收到正確離線數據的情況下將離線數據進行刪除,而導致離線數據丟失的情況,進一步地,保證了請求方能夠接收到正確的離線數據。以下針對各個步驟的具體實現做進一步的說明:
步驟S110:依據接收到的數據獲取請求確定對應的多個離線數據。
具體地,依據接收到的至少兩個請求方發送的針對離線數據的數據獲取請求,確定對應的多個離線數據。
例如,在終端設備A與終端設備B、終端設備A與終端設備C的數據傳輸過程中,若終端設備B和終端設備C從離線狀態變更為在線狀態后,終端設備B和終端設備C向終端設備A發送離線數據的數據獲取請求,終端設備A依據接收到的數據獲取請求確定終端設備B在離線期間對應的離線數據為Data1,并確定終端設備C在離線期間對應的離線數據為Data2。
步驟S120:將多個離線數據中的至少兩個并行發送至對應的至少兩個請求方。
例如,接上例,終端設備A將離線數據Data1和Data2分別并行發送至終端設備B和終端設備C。
步驟S130:接收請求方返回的針對任一離線數據的反饋信息。
例如,終端設備A接收終端設備B返回的針對離線數據Data1的反饋信息和終端設備C返回的針對離線數據Data2的反饋信息。
步驟S140:依據反饋信息判斷請求方是否已正確接收到任一離線數據。
例如,依據終端設備B返回的針對離線數據Data1的反饋信息,如“已接收到離線數據Data1”,終端設備A可判斷判斷終端設備B已正確接收到離線數據Data1;依據終端設備C返回的針對離線數據Data2的反饋信息,如“已接收到離線數據Data2”,終端設備A可判斷判斷終端設備C已正確接收到離線數據Data2。
需要說明的是,本領域技術人員可以了解到,發送反饋消息的方式還可以通過發送ACK(Acknowledgement,確認字符)包的形式進行消息反饋,本發明實施例中,會以特定形式的反饋消息為例說明,但并不對此進行限制。
步驟S150:依據判斷結果針對任一離線數據執行相應的處理操作。
例如,根據終端設備B已正確接收到離線數據Data1的判斷結果,終端設備A對存儲的離線數據Data1執行刪除操作;根據終端設備C已正確接收到離線數據Data2的判斷結果,終端設備A對存儲的離線數據Data2執行刪除操作。
優選地,步驟S120中將多個離線數據中的至少兩個并行發送至對應的至少兩個請求方的步驟進一步包括步驟S121;步驟S121:將至少兩個離線數據通過同一長連接并行發送至對應的至少兩個請求方。
例如,在終端設備A通過同一長連接分別與終端設備B和終端設備C進行數據傳輸,當終端設備A確定終端設備B在離線期間對應的離線數據為Data1,并確定終端設備C在離線期間對應的離線數據為Data2,隨后終端設備A通過該同一長連接,將離線數據Data1和Data2分別并行發送至終端設備B和終端設備C。
需要說明的是,本領域技術人員可以了解到,長連接,指在一個連接上可以連續發送多個數據包,在連接保持期間,如果沒有數據包發送時需要雙方發鏈路檢測包。長連接使得在一個TCP連接的基礎之上,可以發送多個HTTP請求以及接收多個HTTP響應,從而避免每一次請求都去打開一個新的連接。通過使用長連接,可以減少CPU(Central Processing Unit,中央處理器)及內存的使用、減少網絡的堵塞、減少請求的響應時間以及當發生錯誤時,可以在不關閉連接的情況下進行提示等。因此,長連接被廣泛的應用于向終端設備推送各種服務和消息。
優選地,步驟S150依據判斷結果針對任一離線數據執行相應的處理操作,包括以下任一情形:
1)若判斷結果為任一離線數據被正確接收,刪除任一離線數據。例如,根據判斷結果為離線數據Data1的已被終端設備B正確接收,終端設備A對存儲的離線數據Data1執行刪除操作。
2)若判斷結果為任一離線數據未被正確接收,重新將任一離線數據發送至請求方。例如,根據判斷結果為離線數據Data1的未被終端設備B正確接收,終端設備A將存儲的離線數據Data1重新發送至終端設備B。
通過本實施例,能夠準確刪除無用的離線數據,增加離線數據存儲區域的存儲空間,提高離線數據存儲區域的數據存儲效率,同時避免了請求方在未接收到正確離線數據的情況下將離線數據進行刪除,而導致離線數據丟失的情況,進一步地,能夠避免因大量冗余離線數據造成離線數據存儲區域存儲崩潰的情況發生。
優選地,該方法還包括步驟S160;步驟S160:依據預定的數據簽名生成方式,對多個離線數據進行簽名。
例如,在終端設備A通過同一長連接分別與終端設備B和終端設備C進行數據傳輸,當終端設備A確定終端設備B在離線期間對應的離線數據為Data1,并確定終端設備C在離線期間對應的離線數據為Data2,終端設備A依據預定的數據簽名生成方式,如計算MD5(Message Digest Algorithm MD5,消息摘要算法第五版)的值的數據簽名方式,分別對離線數據為Data1和Data2進行MD5計算,若離線數據Data1的數據內容為“hello”,進行MD5計算簽名后的值如“bc4b2a76b9719d91”,若離線數據Data2的數據內容為“world”,進行MD5計算簽名后的值如“a0760186574b0282”。
需要說明的是,本領域技術人員可以了解到,數據簽名的方式有多種,本發明實施例中會對離線數據以特定的數據簽名方式為例說明,但并不對此進行限制;且發送數據列表的存儲方式,可以為數據表的方式,也可以為鏈表方式,本發明實施例中會以特定的發送數據列表的方式為例說明,但并不對此進行限制。
其中,步驟S120將多個離線數據中的至少兩個并行發送至請求方進一步包括步驟S121;步驟S121:將多個離線數據中的至少兩個及各自相應的數據簽名并行發送至請求方。
例如,接上例,終端設備A將離線數據Data1的數據內容“hello”及Data1的MD5數據簽名“bc4b2a76b9719d91”發送至終端設備B,同時并行將離線數據Data2的數據內容“world”及Data2的MD5數據簽名“a0760186574b0282”發送至終端設備C。
其中,請求方返回的反饋信息中包括接收方根據接收到的任一離線數據生成的待驗證數據簽名。例如,終端設備B向終端設備A返回的反饋信息中包括終端設備B根據接收到的離線數據Data1生成的待驗證數據簽名“bc4b2a76b9719d91”;終端設備C向終端設備A返回的反饋信息中包括終端設備C根據接收到的離線數據Data2生成的待驗證數據簽名“a0760186574b0282”。
其中,步驟S140依據反饋信息判斷請求方是否已正確接收任一離線數據進一步包括步驟S141;步驟S141:比對反饋信息中的待驗證數據簽名與任一離線數據對應的數據簽名是否一致來判斷請求方是否已正確接收到任一離線數據。
例如,比對得到終端設備B的反饋信息中的待驗證數據簽名“bc4b2a76b9719d91”與離線數據Data1對應的MD5數據簽名“bc4b2a76b9719d91”一致,判斷終端設備B已正確接收到離線數據Data1;比對得到終端設備C的反饋信息中的待驗證數據簽名“a0760186574b0282”與離線數據Data2對應的MD5數據簽名“a0760186574b0282”一致,判斷終端設備C已正確接收到離線數據Data2。
通過本實施例,可快速判斷請求方是否已正確接收到任一離線數據,從而保證了離線數據能夠及時且準確地發送至請求方。
優選地,該方法還包括步驟S170;步驟S170:將多個離線數據存儲至預定的緩存區域中,并將多個離線數據存儲至預建立的數據庫中。
例如,終端設備A將離線數據Data1和Data2存儲至預定的緩存區域中,如緩存數據庫CacheDB,并將離線數據Data1和Data2存儲至預建立的數據庫中,如磁盤數據庫DB。
其中,步驟S160中對多個離線數據進行簽名的步驟之后還包括步驟S180;步驟S180:將與多個離線數據對應的數據簽名存儲至預定的緩存區域中。
例如,終端設備A將離線數據Data1的數據內容“hello”及Data1的MD5數據簽名“bc4b2a76b9719d91”存儲至緩存數據庫CacheDB,并將離線數據Data2的數據內容“world”及Data2的MD5數據簽名“a0760186574b0282”存儲至緩存數據庫CacheDB。
其中,步驟S140依據反饋信息判斷請求方是否已接收到正確的任一離線數據的步驟之前包括步驟S190;步驟S190:從緩存區域中提取反饋信息對應的離線數據的數據簽名。
例如,終端設備B向終端設備A返回的反饋信息中包括終端設備B根據接收到的離線數據Data1生成的待驗證數據簽名“bc4b2a76b9719d91”,則從緩存數據庫CacheDB中提取到該反饋信息對應的離線數據Data1的數據簽名,為“bc4b2a76b9719d91”。
優選地,步驟S150中若判斷結果為任一離線數據被正確接收,刪除任一離線數據,進一步包括步驟S151;步驟S151:若判斷結果為任一離線數據被正確接收,刪除預定的緩存區域中任一離線數據及相應的數據簽名的數據信息,并刪除預建立的數據庫中任一離線數據的數據記錄。
例如,比對得到終端設備B的反饋信息中的待驗證數據簽名“bc4b2a76b9719d91”與從緩存數據庫CacheDB中提取離線數據Data1對應的數據簽名“bc4b2a76b9719d91”一致,判斷終端設備B已正確接收到離線數據Data1,根據判斷結果為離線數據Data1被正確接收,刪除緩存數據庫CacheDB中存儲的離線數據Data1及相應的數據簽名“bc4b2a76b9719d91”,并刪除磁盤數據庫DB中離線數據Data1的數據記錄。
優選地,步驟S150中若判斷結果為任一離線數據未被正確接收,重新將任一離線數據發送至請求方,進一步包括步驟S152、步驟S153和步驟S154;步驟S152:若判斷結果為任一離線數據未被正確接收,刪除預定的緩存區域中任一離線數據及相應的數據簽名的數據信息;步驟S153:在預建立的數據庫中重新獲取任一離線數據的數據記錄,并存儲至預定的緩存區域;步驟S154:將重新獲取到的任一離線數據發送至請求方。
例如,若終端設備C向終端設備A返回的反饋信息中包括終端設備C根據接收到的離線數據Data2生成的待驗證數據簽名為“a0760186574b0283”,從緩存數據庫CacheDB中提取該反饋信息對應的離線數據Data2的數據簽名,為“a0760186574b0282”,比對得到終端設備C的反饋信息中的待驗證數據簽名“a0760186574b0283”與從緩存數據庫CacheDB中提取離線數據Data2對應的數據簽名“a0760186574b0282”不一致,判斷終端設備C未正確接收到離線數據Data2,根據判斷結果為離線數據Data2未被正確接收,刪除緩存數據庫CacheDB中離線數據Data2及相應的數據簽名“a0760186574b0282”;隨后在磁盤數據庫DB中重新獲取離線數據Data2的數據記錄,并存儲至緩存數據庫CacheDB,并將重新獲取到的離線數據Data2發送至終端設備C。
優選地,步驟S154進一步包括步驟S1541和步驟S1542;步驟S1541:依據預定的數據簽名生成方式,對重新發送的任一離線數據進行簽名;步驟S1542:將與任一離線數據對應的數據簽名存儲至預定的緩存區域中。
例如,接上例,依據預定計算MD5值的數據簽名方式,對重新獲取到的離線數據Data2進行簽名,離線數據Data2的數據內容為“world”得到的數據簽名為“a0760186574b0282”,隨后,將與離線數據Data2對應的數據簽名“a0760186574b0282”存儲至緩存數據庫CacheDB中與離線數據Data2對應的存儲位置。
通過本實施例,當多個鏈接同時寫同一長連接時,能夠保證數據的完整性,使得請求方無法獲取到非完整的數據,保證了請求方獲取到準確的離線數據。
圖2為本發明中另一實施例的發送離線消息的裝置的結構示意圖。
本發明的實施例中,各模塊所執行的內容概述如下:確定模塊210依據接收到的數據獲取請求確定對應的多個離線數據;發送模塊220將多個離線數據中的至少兩個并行發送至對應的至少兩個請求方;接收模塊230接收請求方返回的針對任一離線數據的反饋信息;判斷模塊240依據反饋信息判斷請求方是否已正確接收到任一離線數據;執行模塊250依據判斷結果針對任一離線數據執行相應的處理操作。
本發明的實施例中,提出了一種發送離線消息的裝置,依據接收到的數據獲取請求確定對應的多個離線數據;將多個離線數據中的至少兩個并行發送至對應的至少兩個請求方,實現了同時將離線數據及時地發送至各請求方,避免了各請求方同時請求獲取離線數據時可能會產生的其中至少一個請求方延遲接收離線數據的情況;接收請求方返回的針對任一離線數據的反饋信息,依據反饋信息判斷請求方是否已正確接收到任一離線數據,實現了準確地判斷請求方是否正確接收到任一離線數據,為后續針對任一離線數據執行相應的處理操作提供了必要的前提保障;依據判斷結果針對任一離線數據執行相應的處理操作,實現了根據不同的判斷結果,對任一離線數據執行不同的處理操作,避免了請求方在未接收到正確離線數據的情況下將離線數據進行刪除,而導致離線數據丟失的情況,進一步地,保證了請求方能夠接收到正確的離線數據。以下針對各個模塊的具體實現做進一步的說明:
確定模塊210用于依據接收到的數據獲取請求確定對應的多個離線數據。
具體地,依據接收到的至少兩個請求方發送的針對離線數據的數據獲取請求,確定對應的多個離線數據。
例如,在終端設備A與終端設備B、終端設備A與終端設備C的數據傳輸過程中,若終端設備B和終端設備C從離線狀態變更為在線狀態后,終端設備B和終端設備C向終端設備A發送離線數據的數據獲取請求,終端設備A依據接收到的數據獲取請求確定終端設備B在離線期間對應的離線數據為Data1,并確定終端設備C在離線期間對應的離線數據為Data2。
發送模塊220用于將多個離線數據中的至少兩個并行發送至對應的至少兩個請求方。
例如,接上例,終端設備A將離線數據Data1和Data2分別并行發送至終端設備B和終端設備C。
接收模塊230用于接收請求方返回的針對任一離線數據的反饋信息。
例如,終端設備A接收終端設備B返回的針對離線數據Data1的反饋信息和終端設備C返回的針對離線數據Data2的反饋信息。
判斷模塊240用于依據反饋信息判斷請求方是否已正確接收到任一離線數據。
例如,依據終端設備B返回的針對離線數據Data1的反饋信息,如“已接收到離線數據Data1”,終端設備A可判斷判斷終端設備B已正確接收到離線數據Data1;依據終端設備C返回的針對離線數據Data2的反饋信息,如“已接收到離線數據Data2”,終端設備A可判斷判斷終端設備C已正確接收到離線數據Data2。
需要說明的是,本領域技術人員可以了解到,發送反饋消息的方式還可以通過發送ACK(Acknowledgement,確認字符)包的形式進行消息反饋,本發明實施例中,會以特定形式的反饋消息為例說明,但并不對此進行限制。
執行模塊250用于依據判斷結果針對任一離線數據執行相應的處理操作。
例如,根據終端設備B已正確接收到離線數據Data1的判斷結果,終端設備A對存儲的離線數據Data1執行刪除操作;根據終端設備C已正確接收到離線數據Data2的判斷結果,終端設備A對存儲的離線數據Data2執行刪除操作。
優選地,發送模塊220進一步包括第一發送單元;第一發送單元用于將至少兩個離線數據通過同一長連接并行發送至對應的至少兩個請求方。
例如,在終端設備A通過同一長連接分別與終端設備B和終端設備C進行數據傳輸,當終端設備A確定終端設備B在離線期間對應的離線數據為Data1,并確定終端設備C在離線期間對應的離線數據為Data2,隨后終端設備A通過該同一長連接,將離線數據Data1和Data2分別并行發送至終端設備B和終端設備C。
需要說明的是,本領域技術人員可以了解到,長連接,指在一個連接上可以連續發送多個數據包,在連接保持期間,如果沒有數據包發送時需要雙方發鏈路檢測包。長連接使得在一個TCP連接的基礎之上,可以發送多個HTTP請求以及接收多個HTTP響應,從而避免每一次請求都去打開一個新的連接。通過使用長連接,可以減少CPU(Central Processing Unit,中央處理器)及內存的使用、減少網絡的堵塞、減少請求的響應時間以及當發生錯誤時,可以在不關閉連接的情況下進行提示等。因此,長連接被廣泛的應用于向終端設備推送各種服務和消息。
優選地,執行模塊250依據判斷結果針對任一離線數據執行相應的處理操作,包括以下任一情形:
1)若判斷結果為任一離線數據被正確接收,刪除任一離線數據。例如,根據判斷結果為離線數據Data1的已被終端設備B正確接收,終端設備A對存儲的離線數據Data1執行刪除操作。
2)若判斷結果為任一離線數據未被正確接收,重新將任一離線數據發送至請求方。例如,根據判斷結果為離線數據Data1的未被終端設備B正確接收,終端設備A將存儲的離線數據Data1重新發送至終端設備B。
通過本實施例,能夠準確刪除無用的離線數據,增加離線數據存儲區域的存儲空間,提高離線數據存儲區域的數據存儲效率,同時避免了請求方在未接收到正確離線數據的情況下將離線數據進行刪除,而導致離線數據丟失的情況,進一步地,能夠避免因大量冗余離線數據造成離線數據存儲區域存儲崩潰的情況發生。
優選地,該裝置還包括第一簽名模塊;第一簽名模塊依據預定的數據簽名生成方式,對多個離線數據進行簽名。
例如,在終端設備A通過同一長連接分別與終端設備B和終端設備C進行數據傳輸,當終端設備A確定終端設備B在離線期間對應的離線數據為Data1,并確定終端設備C在離線期間對應的離線數據為Data2,終端設備A依據預定的數據簽名生成方式,如計算MD5(Message Digest Algorithm MD5,消息摘要算法第五版)的值的數據簽名方式,分別對離線數據為Data1和Data2進行MD5計算,若離線數據Data1的數據內容為“hello”,進行MD5計算簽名后的值如“bc4b2a76b9719d91”,若離線數據Data2的數據內容為“world”,進行MD5計算簽名后的值如“a0760186574b0282”。
需要說明的是,本領域技術人員可以了解到,數據簽名的方式有多種,本發明實施例中會對離線數據以特定的數據簽名方式為例說明,但并不對此進行限制;且發送數據列表的存儲方式,可以為數據表的方式,也可以為鏈表方式,本發明實施例中會以特定的發送數據列表的方式為例說明,但并不對此進行限制。
其中,發送模塊220用于將多個離線數據中的至少兩個及各自相應的數據簽名并行發送至請求方。
例如,接上例,終端設備A將離線數據Data1的數據內容“hello”及Data1的MD5數據簽名“bc4b2a76b9719d91”發送至終端設備B,同時并行將離線數據Data2的數據內容“world”及Data2的MD5數據簽名“a0760186574b0282”發送至終端設備C。
其中,請求方返回的反饋信息中包括接收方根據接收到的任一離線數據生成的待驗證數據簽名。例如,終端設備B向終端設備A返回的反饋信息中包括終端設備B根據接收到的離線數據Data1生成的待驗證數據簽名“bc4b2a76b9719d91”;終端設備C向終端設備A返回的反饋信息中包括終端設備C根據接收到的離線數據Data2生成的待驗證數據簽名“a0760186574b0282”。
其中,判斷模塊240用于比對反饋信息中的待驗證數據簽名與任一離線數據對應的數據簽名是否一致來判斷請求方是否已正確接收到任一離線數據。
例如,比對得到終端設備B的反饋信息中的待驗證數據簽名“bc4b2a76b9719d91”與離線數據Data1對應的MD5數據簽名“bc4b2a76b9719d91”一致,判斷終端設備B已正確接收到離線數據Data1;比對得到終端設備C的反饋信息中的待驗證數據簽名“a0760186574b0282”與離線數據Data2對應的MD5數據簽名“a0760186574b0282”一致,判斷終端設備C已正確接收到離線數據Data2。
通過本實施例,可快速判斷請求方是否已正確接收到任一離線數據,從而保證了離線數據能夠及時且準確地發送至請求方。
優選地,該裝置還包括第一存儲模塊;第一存儲模塊用于將多個離線數據存儲至預定的緩存區域中,并將多個離線數據存儲至預建立的數據庫中。
例如,終端設備A將離線數據Data1和Data2存儲至預定的緩存區域中,如緩存數據庫CacheDB,并將離線數據Data1和Data2存儲至預建立的數據庫中,如磁盤數據庫DB。
其中,對多個離線數據進行簽名之后還包括第二存儲模塊;第二存儲模塊用于將與多個離線數據對應的數據簽名存儲至預定的緩存區域中。
例如,終端設備A將離線數據Data1的數據內容“hello”及Data1的MD5數據簽名“bc4b2a76b9719d91”存儲至緩存數據庫CacheDB,并將離線數據Data2的數據內容“world”及Data2的MD5數據簽名“a0760186574b0282”存儲至緩存數據庫CacheDB。
其中,依據反饋信息判斷請求方是否已接收到正確的任一離線數據之前包括提取模塊;提取模塊用于從緩存區域中提取反饋信息對應的離線數據的數據簽名。
例如,終端設備B向終端設備A返回的反饋信息中包括終端設備B根據接收到的離線數據Data1生成的待驗證數據簽名“bc4b2a76b9719d91”,則從緩存數據庫CacheDB中提取到該反饋信息對應的離線數據Data1的數據簽名,為“bc4b2a76b9719d91”。
優選地,若判斷結果為任一離線數據被正確接收,刪除任一離線數據,執行模塊250進一步包括第一刪除單元;第一刪除單元用于若判斷結果為任一離線數據被正確接收,刪除預定的緩存區域中任一離線數據及相應的數據簽名的數據信息,并刪除預建立的數據庫中任一離線數據的數據記錄。
例如,比對得到終端設備B的反饋信息中的待驗證數據簽名“bc4b2a76b9719d91”與從緩存數據庫CacheDB中提取離線數據Data1對應的數據簽名“bc4b2a76b9719d91”一致,判斷終端設備B已正確接收到離線數據Data1,根據判斷結果為離線數據Data1被正確接收,刪除緩存數據庫CacheDB中存儲的離線數據Data1及相應的數據簽名“bc4b2a76b9719d91”,并刪除磁盤數據庫DB中離線數據Data1的數據記錄。
優選地,若判斷結果為任一離線數據未被正確接收,重新將任一離線數據發送至請求方,執行模塊250進一步包括第二刪除單元、獲取單元和第二發送單元;第二刪除單元用于若判斷結果為任一離線數據未被正確接收,刪除預定的緩存區域中任一離線數據及相應的數據簽名的數據信息;獲取單元用于在預建立的數據庫中重新獲取任一離線數據的數據記錄,并存儲至預定的緩存區域;第二發送單元用于將重新獲取到的任一離線數據發送至請求方。
例如,若終端設備C向終端設備A返回的反饋信息中包括終端設備C根據接收到的離線數據Data2生成的待驗證數據簽名為“a0760186574b0283”,從緩存數據庫CacheDB中提取該反饋信息對應的離線數據Data2的數據簽名,為“a0760186574b0282”,比對得到終端設備C的反饋信息中的待驗證數據簽名“a0760186574b0283”與從緩存數據庫CacheDB中提取離線數據Data2對應的數據簽名“a0760186574b0282”不一致,判斷終端設備C未正確接收到離線數據Data2,根據判斷結果為離線數據Data2未被正確接收,刪除緩存數據庫CacheDB中離線數據Data2及相應的數據簽名“a0760186574b0282”;隨后在磁盤數據庫DB中重新獲取離線數據Data2的數據記錄,并存儲至緩存數據庫CacheDB,并將重新獲取到的離線數據Data2發送至終端設備C。
優選地,該裝置還包括第二簽名模塊和第三存儲模塊;第二簽名模塊用于依據預定的數據簽名生成方式,對重新發送的任一離線數據進行簽名;第三存儲模塊用于將與任一離線數據對應的數據簽名存儲至預定的緩存區域中。
例如,接上例,依據預定計算MD5值的數據簽名方式,對重新獲取到的離線數據Data2進行簽名,離線數據Data2的數據內容為“world”得到的數據簽名為“a0760186574b0282”,隨后,將與離線數據Data2對應的數據簽名“a0760186574b0282”存儲至緩存數據庫CacheDB中與離線數據Data2對應的存儲位置。
通過本實施例,當多個鏈接同時寫同一長連接時,能夠保證數據的完整性,使得請求方無法獲取到非完整的數據,保證了請求方獲取到準確的離線數據。
本技術領域技術人員可以理解,本發明包括涉及用于執行本申請中所述操作中的一項或多項的設備。這些設備可以為所需的目的而專門設計和制造,或者也可以包括通用計算機中的已知設備。這些設備具有存儲在其內的計算機程序,這些計算機程序選擇性地激活或重構。這樣的計算機程序可以被存儲在設備(例如,計算機)可讀介質中或者存儲在適于存儲電子指令并分別耦聯到總線的任何類型的介質中,所述計算機可讀介質包括但不限于任何類型的盤(包括軟盤、硬盤、光盤、CD-ROM、和磁光盤)、ROM(Read-Only Memory,只讀存儲器)、RAM(Random Access Memory,隨即存儲器)、EPROM(Erasable Programmable Read-Only Memory,可擦寫可編程只讀存儲器)、EEPROM(Electrically Erasable Programmable Read-Only Memory,電可擦可編程只讀存儲器)、閃存、磁性卡片或光線卡片。也就是,可讀介質包括由設備(例如,計算機)以能夠讀的形式存儲或傳輸信息的任何介質。
本技術領域技術人員可以理解,可以用計算機程序指令來實現這些結構圖和/或框圖和/或流圖中的每個框以及這些結構圖和/或框圖和/或流圖中的框的組合。本技術領域技術人員可以理解,可以將這些計算機程序指令提供給通用計算機、專業計算機或其他可編程數據處理方法的處理器來實現,從而通過計算機或其他可編程數據處理方法的處理器來執行本發明公開的結構圖和/或框圖和/或流圖的框或多個框中指定的方案。
本技術領域技術人員可以理解,本發明中已經討論過的各種操作、方法、流程中的步驟、措施、方案可以被交替、更改、組合或刪除。進一步地,具有本發明中已經討論過的各種操作、方法、流程中的其他步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。進一步地,現有技術中的具有與本發明中公開的各種操作、方法、流程中的步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。
以上所述僅是本發明的部分實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發明的保護范圍。