本公開涉及通信領(lǐng)域,尤其涉及一種消息重發(fā)方法及裝置。
背景技術(shù):
:目前,隨著計算機軟件技術(shù)的發(fā)展,終端中的應(yīng)用(Application,簡稱APP)越來越多,從而豐富用戶的日常生活。APP對應(yīng)的運營商服務(wù)器經(jīng)常需要向用戶推送各種應(yīng)用消息,例如:更新消息、優(yōu)惠消息等。但是由于移動網(wǎng)絡(luò)環(huán)境的影響,可能會存在有些消息無法發(fā)送至用戶,從而降低通信可靠性,為了提高消息的到達率,服務(wù)器可以采取重發(fā)消息的方式,通常服務(wù)器推送的消息數(shù)量龐大,因此如何重發(fā)應(yīng)用消息至關(guān)重要。技術(shù)實現(xiàn)要素:為克服相關(guān)技術(shù)中存在的問題,本公開提供一種消息重發(fā)方法及裝置。所述技術(shù)方案如下:根據(jù)本公開實施例的第一方面,提供一種消息重發(fā)方法,包括:步驟S101:服務(wù)器向至少一個終端發(fā)送至少一條應(yīng)用消息,并對至少一條應(yīng)用消息中的每條應(yīng)用消息從發(fā)送時刻開始計時;步驟S102:服務(wù)器判斷第一條應(yīng)用消息的計時時間是否達到第一預設(shè)時間,若是,則服務(wù)器判斷是否要重發(fā)第一條應(yīng)用消息,并且將第二條應(yīng)用消息作為新的第一條應(yīng)用消息,繼續(xù)判斷新的第一條應(yīng)用消息的計時時間是否達到第一預設(shè)時間,若是,則服務(wù)器判斷是否要重發(fā)新的第一條應(yīng)用消息,直至判斷完是否要重發(fā)最后一條應(yīng)用消息為止;步驟S103:若服務(wù)器需要重發(fā)至少一條應(yīng)用消息時,則對需要重發(fā)的至少一條應(yīng)用消息繼續(xù)執(zhí)行步驟S101至步驟S103;否則,則服務(wù)器停止重發(fā)。本公開的實施例提供的技術(shù)方案可以包括以下有益效果:現(xiàn)有技術(shù)中服務(wù)器不區(qū)分應(yīng)用消息的先后發(fā)送順序,周期性的或者非周期性的要對所有應(yīng)用消息的計時時間進行判斷,當任一條應(yīng)用消息的計時時間達到預設(shè)時間,則判斷是否重發(fā)該應(yīng)用消息。本公開實施例中,由于當服務(wù)器確定第一條應(yīng)用消息的計時時間達到第一預設(shè)時間時,才繼續(xù)判斷第二條應(yīng)用消息的計時時間是否達到第一預設(shè)時間,依次類推,當服務(wù)器確定倒數(shù)第二條應(yīng)用消息的計時時間達到第一預設(shè)時間時,才繼續(xù)判斷倒數(shù)第一條應(yīng)用消息的計時時間是否達到第一預設(shè)時間,從而可以提高重發(fā)效率??蛇x地,還包括:服務(wù)器將至少一條應(yīng)用消息按照發(fā)送順序依次存儲至第一隊列的對尾中;相應(yīng)的,服務(wù)器向至少一個終端發(fā)送至少一條應(yīng)用消息,包括:服務(wù)器按照第一隊列從對頭到對尾的順序依次發(fā)送至少一條應(yīng)用消息。可選地,還包括:服務(wù)器將需要重發(fā)的至少一條應(yīng)用消息按照發(fā)送順序依次存儲至第二隊列的對尾中;相應(yīng)的,服務(wù)器向至少一個終端發(fā)送所述需要重發(fā)的至少一條應(yīng)用消息,包括:服務(wù)器按照所述第二隊列從對頭到對尾的順序依次發(fā)送所述需要重發(fā)的至少一條應(yīng)用消息??蛇x地,服務(wù)器判斷是否要重發(fā)第一條應(yīng)用消息,包括:服務(wù)器判斷是否接收到第一條應(yīng)用消息對應(yīng)的確認Ack消息;若服務(wù)器未接收到第一條應(yīng)用消息對應(yīng)的確認Ack消息,則服務(wù)器判斷第一條應(yīng)用消息的計時時間是否小于第二預設(shè)時間,其中第二預設(shè)時間大于第一預設(shè)時間;或者,判斷第一條應(yīng)用消息的重發(fā)次數(shù)是否小于預設(shè)次數(shù)。通過該方法可以有效判斷是否要重發(fā)第一條應(yīng)用消息??蛇x地,服務(wù)器向至少一個終端發(fā)送至少一條應(yīng)用消息之前,還包括:服務(wù)器生成每條應(yīng)用消息的序列號,將序列號攜帶至所述每條應(yīng)用消息中,序列號包括:每條應(yīng)用消息的待發(fā)送時間和待發(fā)送時間內(nèi)服務(wù)器為每條應(yīng)用消息設(shè)置的編號。可選地,判斷是否接收到第一條應(yīng)用消息對應(yīng)的確認Ack消息之前,還包括:服務(wù)器接收至少一個終端發(fā)送的至少一個確認Ack消息;服務(wù)器將所述至少一個確認Ack消息以哈希表的形式存儲至本地數(shù)據(jù)庫中,哈希表的每一項包括:每條應(yīng)用消息對應(yīng)的序列號和用于表示每條應(yīng)用消息是否被成功接收的標識信息;相應(yīng)的,判斷是否接收到第一條應(yīng)用消息對應(yīng)的確認Ack消息,包括:服務(wù)器查詢哈希表判斷是否接收到第一條應(yīng)用消息對應(yīng)的確認Ack消息。通過哈希表存儲方式可以提高查詢效率,進而提高重發(fā)效率??蛇x地,判斷是否接收到第一條應(yīng)用消息對應(yīng)的確認Ack消息之前,還包括:服務(wù)器接收至少一個終端發(fā)送的至少一個確認Ack消息;服務(wù)器將至少一個確認Ack消息以位圖的形式存儲至本地數(shù)據(jù)庫中,位圖的每一項包括:用于表示每條應(yīng)用消息是否被成功接收的標識信息;相應(yīng)的,判斷是否接收到第一條應(yīng)用消息對應(yīng)的確認Ack消息,包括:服務(wù)器查詢位圖判斷是否接收到第一條應(yīng)用消息對應(yīng)的確認Ack消息。通過位圖方式可以達到節(jié)省內(nèi)存空間的目的。下面將介紹發(fā)明實施例提供一種消息重發(fā)裝置,其中裝置部分與上述消息重發(fā)方法對應(yīng),對應(yīng)技術(shù)效果相同,在此不再贅述。根據(jù)本公開實施例的第二方面,提供一種消息重發(fā)裝置,包括:發(fā)送模塊,被配置為執(zhí)行步驟S101:向至少一個終端發(fā)送至少一條應(yīng)用消息,并對至少一條應(yīng)用消息中的每條應(yīng)用消息從發(fā)送時刻開始計時;判斷模塊,被配置為執(zhí)行步驟S102:判斷第一條應(yīng)用消息的計時時間是否達到第一預設(shè)時間,若是,則判斷是否要重發(fā)所述第一條應(yīng)用消息,并且將第二條應(yīng)用消息作為新的第一條應(yīng)用消息,繼續(xù)判斷新的第一條應(yīng)用消息的計時時間是否達到所述第一預設(shè)時間,若是,則判斷是否要重發(fā)所述新的第一條應(yīng)用消息,直至判斷完是否要重發(fā)最后一條應(yīng)用消息為止;發(fā)送模塊,還被配置為執(zhí)行步驟S103:當需要重發(fā)至少一條應(yīng)用消息時,則發(fā)送模塊和判斷模塊繼續(xù)執(zhí)行步驟S101至步驟S103;否則,則發(fā)送模塊停止重發(fā)。可選地,還包括:第一存儲模塊,被配置為將至少一條應(yīng)用消息按照發(fā)送順序依次存儲至第一隊列的對尾中;相應(yīng)的,發(fā)送模塊,具體被配置為按照第一隊列從對頭到對尾的順序依次發(fā)送至少一條應(yīng)用消息??蛇x地,還包括:第二存儲模塊,被配置為將需要重發(fā)的至少一條應(yīng)用消息按照發(fā)送順序依次存儲至第二隊列的對尾中;相應(yīng)的,發(fā)送模塊,具體被配置為按照第二隊列從對頭到對尾的順序依次發(fā)送所述需要重發(fā)的至少一條應(yīng)用消息??蛇x地,判斷模塊具體被配置為:判斷是否接收到所述第一條應(yīng)用消息對應(yīng)的確認Ack消息;若判斷未接收到所述第一條應(yīng)用消息對應(yīng)的確認Ack消息,則判斷所述第一條應(yīng)用消息的計時時間是否小于第二預設(shè)時間,其中所述第二預設(shè)時間大于所述第一預設(shè)時間;或者,判斷所述第一條應(yīng)用消息的重發(fā)次數(shù)是否小于預設(shè)次數(shù)。可選地,還包括:生成模塊,被配置為生成所述每條應(yīng)用消息的序列號,將所述序列號攜帶至所述每條應(yīng)用消息中,所述序列號包括:所述每條應(yīng)用消息的待發(fā)送時間和所述待發(fā)送時間內(nèi)所述裝置為所述每條應(yīng)用消息設(shè)置的編號。可選地,還包括:第一接收模塊,被配置為接收所述至少一個終端發(fā)送的至少一個確認Ack消息;第三存儲模塊,被位置為將所述至少一個確認Ack消息以哈希表的形式存儲至本地數(shù)據(jù)庫中,所述哈希表的每一項包括:所述每條應(yīng)用消息對應(yīng)的序列號和用于表示所述每條應(yīng)用消息是否被成功接收的標識信息;相應(yīng)的,所述判斷模塊,具體被配置為查詢所述哈希表判斷是否接收到所述第一條應(yīng)用消息對應(yīng)的確認Ack消息??蛇x地,還包括:第二接收模塊,被配置為接收所述至少一個終端發(fā)送的至少一個確認Ack消息;第四存儲模塊,被配置為將所述至少一個確認Ack消息以位圖的形式存儲至本地數(shù)據(jù)庫中,所述位圖的每一項包括:用于表示所述每條應(yīng)用消息是否被成功接收的標識信息;相應(yīng)的,所述判斷模塊,具體被配置為查詢所述位圖判斷是否接收到所述第一條應(yīng)用消息對應(yīng)的確認Ack消息。根據(jù)本公開實施例的第三方面,提供一種消息重發(fā)裝置,包括:處理器、發(fā)送器和用于存儲所述處理器的可執(zhí)行指令的存儲器;其中,發(fā)送器,被配置為執(zhí)行步驟S101:向至少一個終端發(fā)送至少一條應(yīng)用消息,并對所述至少一條應(yīng)用消息中的每條應(yīng)用消息從發(fā)送時刻開始計時;處理器,被配置為執(zhí)行步驟S102:判斷第一條應(yīng)用消息的計時時間是否達到第一預設(shè)時間,若是,則判斷是否要重發(fā)所述第一條應(yīng)用消息,并且將第二條應(yīng)用消息作為新的第一條應(yīng)用消息,繼續(xù)判斷所述新的第一條應(yīng)用消息的計時時間是否達到所述第一預設(shè)時間,若是,則判斷是否要重發(fā)所述新的第一條應(yīng)用消息,直至判斷完是否要重發(fā)最后一條應(yīng)用消息為止;發(fā)送器,還被配置為執(zhí)行步驟S103:當需要重發(fā)至少一條應(yīng)用消息時,則所述發(fā)送器和所述處理器繼續(xù)執(zhí)行步驟S101至步驟S103;否則,則所述發(fā)送器停止重發(fā)。本公開的實施例提供的技術(shù)方案可以包括以下有益效果:步驟S101:服務(wù)器向至少一個終端發(fā)送至少一條應(yīng)用消息,并對至少一條應(yīng)用消息中的每條應(yīng)用消息從發(fā)送時刻開始計時;步驟S102:服務(wù)器判斷第一條應(yīng)用消息的計時時間是否達到第一預設(shè)時間,若是,則服務(wù)器判斷是否要重發(fā)第一條應(yīng)用消息,并且將第二條應(yīng)用消息作為新的第一條應(yīng)用消息,繼續(xù)判斷新的第一條應(yīng)用消息的計時時間是否達到第一預設(shè)時間,若是,則服務(wù)器判斷是否要重發(fā)新的第一條應(yīng)用消息,直至判斷完是否要重發(fā)最后一條應(yīng)用消息為止;步驟S103:若服務(wù)器需要重發(fā)至少一條應(yīng)用消息時,則對需要重發(fā)的至少一條應(yīng)用消息繼續(xù)執(zhí)行步驟S101至步驟S103;否則,則服務(wù)器停止重發(fā),從而提高應(yīng)用消息重發(fā)效率。應(yīng)當理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性和解釋性的,并不能限制本公開。附圖說明此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本公開的實施例,并與說明書一起用于解釋本公開的原理。圖1是根據(jù)一示例性實施例示出的一種消息重發(fā)方法的流程圖;圖2A和圖2B是根據(jù)一示例性實施例示出的隊列示意圖;圖3是根據(jù)另一示例性實施例示出的一種消息重發(fā)方法的流程圖;圖4是根據(jù)再一示例性實施例示出的一種消息重發(fā)方法的流程圖;圖5是根據(jù)又一示例性實施例示出的一種消息重發(fā)方法的流程圖;圖6是根據(jù)一示例性實施例示出的一種消息重發(fā)裝置的框圖;圖7是根據(jù)另一示例性實施例示出的一種消息重發(fā)裝置的框圖;圖8是根據(jù)另一示例性實施例示出的一種用于消息重發(fā)裝置的框圖;圖9是根據(jù)一示例性實施例示出的一種用于消息重發(fā)裝置900的框圖。通過上述附圖,已示出本公開明確的實施例,后文中將有更詳細的描述。這些附圖和文字描述并不是為了通過任何方式限制本公開構(gòu)思的范圍,而是通過參考特定實施例為本領(lǐng)域技術(shù)人員說明本公開的概念。具體實施方式這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本公開相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本公開的一些方面相一致的裝置和方法的例子。圖1是根據(jù)一示例性實施例示出的一種消息重發(fā)方法的流程圖,本實施例以該消息重發(fā)方法應(yīng)用于服務(wù)器中來舉例說明,該方法的應(yīng)用場景為:服務(wù)器向至少一個終端發(fā)送應(yīng)用消息的場景,該消息重發(fā)方法可以包括如下幾個步驟:在步驟S101中:服務(wù)器向至少一個終端發(fā)送至少一條應(yīng)用消息,并對至少一條應(yīng)用消息中的每條應(yīng)用消息從發(fā)送時刻開始計時;其中,該服務(wù)器為APP對應(yīng)的服務(wù)器,該應(yīng)用消息可以是更新消息、優(yōu)惠消息等,該應(yīng)用消息中攜帶用于唯一標識該應(yīng)用消息的序列號,當終端向服務(wù)器發(fā)送該應(yīng)用消息對應(yīng)的確認(Acknoledge,簡稱Ack)消息時,則該Ack消息中也攜帶該序列號,以表示該Ack消息為該應(yīng)用消息對應(yīng)的Ack消息。在步驟S102中:服務(wù)器判斷第一條應(yīng)用消息的計時時間是否達到第一預設(shè)時間,若是,則服務(wù)器判斷是否要重發(fā)第一條應(yīng)用消息,并且將第二條應(yīng)用消息作為新的第一條應(yīng)用消息,繼續(xù)判斷新的第一條應(yīng)用消息的計時時間是否達到第一預設(shè)時間,若是,則服務(wù)器判斷是否要重發(fā)新的第一條應(yīng)用消息,直至判斷完是否要重發(fā)最后一條應(yīng)用消息為止;所謂第一條應(yīng)用消息是指按照時間順序,至少一條應(yīng)用消息中第一個被服務(wù)器發(fā)送的應(yīng)用消息,所述第一預設(shè)時間根據(jù)應(yīng)用消息到達終端的時間以及Ack消息到達服務(wù)器的時間和設(shè)置,該第一預設(shè)時間可以是30秒(Second,簡稱S),60s等,本公開實施例對此不做限制。當服務(wù)器確定第一條應(yīng)用消息的計時時間達到第一預設(shè)時間時,一方面服務(wù)器判斷是否要重發(fā)第一條應(yīng)用消息,另一方面將第二條應(yīng)用消息作為新的第一條應(yīng)用消息,繼續(xù)判斷新的第一條應(yīng)用消息的計時時間是否達到所述第一預設(shè)時間,也就是說,服務(wù)器確定第一條應(yīng)用消息的計時時間還未達到第一預設(shè)時間時,服務(wù)器不判斷第二條應(yīng)用消息的計時時間是否達到第一預設(shè)時間,其中這樣做的原因是:實際上終端性能通常相同,與服務(wù)器之間的距離也基本相同,由于第一條應(yīng)用消息的發(fā)送時刻早于第二條應(yīng)用消息的發(fā)送時刻,因此當?shù)谝粭l應(yīng)用消息的計時時間還未達到第一預設(shè)時間,通常第二條應(yīng)用消息的計時時間更不會達到第一預設(shè)時間。依次類推,當服務(wù)器確定第二條應(yīng)用消息的計時時間達到第一預設(shè)時間時,服務(wù)器判斷是否要重發(fā)第二條應(yīng)用消息,繼續(xù)判斷第三條應(yīng)用消息的計時時間是否達到第一預設(shè)時間,當服務(wù)器確定第三條應(yīng)用消息的計時時間達到第一預設(shè)時間時,服務(wù)器判斷是否要重發(fā)第三條應(yīng)用消息,直至判斷完是否要重發(fā)最后一條應(yīng)用消息為止。在步驟S103中:若服務(wù)器需要重發(fā)至少一條應(yīng)用消息時,則對需要重發(fā)的至少一條應(yīng)用消息繼續(xù)執(zhí)行步驟S101至步驟S103;否則,則服務(wù)器停止重發(fā)。也就是說,將需要重發(fā)的至少一條應(yīng)用消息作為步驟S101中的至少一條應(yīng)用消息,則對需要重發(fā)的至少一條應(yīng)用消息繼續(xù)執(zhí)行步驟S101至步驟S103;否則,則服務(wù)器停止重發(fā)。示例性的:服務(wù)器向至少一個終端發(fā)送應(yīng)用消息1、應(yīng)用消息2和應(yīng)用消息3,并對三條應(yīng)用消息中的每條應(yīng)用消息從發(fā)送時刻開始計時;服務(wù)器判斷第一條應(yīng)用消息,即應(yīng)用消息1的計時時間,如果該計時時間達到第一預設(shè)時間,則服務(wù)器判斷是否要重發(fā)應(yīng)用消息1,并判斷應(yīng)用消息2的計時時間是否達到第一預設(shè)時間,若是,則判斷是否要重發(fā)應(yīng)用消息2,并繼續(xù)判斷應(yīng)用消息3的計時時間是否達到第一預設(shè)時間,若是,則判斷是否要重發(fā)應(yīng)用消息3,假設(shè)第一輪結(jié)束后,服務(wù)器確定要重發(fā)應(yīng)用消息1和應(yīng)用消息2,則繼續(xù)對應(yīng)用消息1和應(yīng)用消息2從重發(fā)時刻開始計時,服務(wù)器判斷應(yīng)用消息1的計時時間是否達到第一預設(shè)時間,若是,則服務(wù)器判斷是否要重發(fā)應(yīng)用消息1,并且判斷應(yīng)用消息2的計時時間是否達到第一預設(shè)時間,若是,則服務(wù)器判斷是否要重發(fā)應(yīng)用消息2,若應(yīng)用消息1和應(yīng)用消息2都不需要重發(fā)了,則服務(wù)器停止重發(fā)應(yīng)用消息。現(xiàn)有技術(shù)中服務(wù)器不區(qū)分應(yīng)用消息的先后發(fā)送順序,周期性的或者非周期性的要對所有應(yīng)用消息的計時時間進行判斷,當任一條應(yīng)用消息的計時時間達到預設(shè)時間,則判斷是否重發(fā)該應(yīng)用消息。本公開實施例中,由于當服務(wù)器確定第一條應(yīng)用消息的計時時間達到第一預設(shè)時間時,才繼續(xù)判斷第二條應(yīng)用消息的計時時間是否達到第一預設(shè)時間,依次類推,當服務(wù)器確定倒數(shù)第二條應(yīng)用消息的計時時間達到第一預設(shè)時間時,才繼續(xù)判斷倒數(shù)第一條應(yīng)用消息的計時時間是否達到第一預設(shè)時間,從而可以提高重發(fā)效率??蛇x地,服務(wù)器將至少一條應(yīng)用消息按照發(fā)送順序依次存儲至第一隊列的對尾中;相應(yīng)的,所述服務(wù)器向至少一個終端發(fā)送至少一條應(yīng)用消息,包括:所述服務(wù)器按照所述第一隊列從對頭到對尾的順序依次發(fā)送所述至少一條應(yīng)用消息??蛇x地,服務(wù)器將需要重發(fā)的至少一條應(yīng)用消息按照發(fā)送順序依次存儲至第二隊列的對尾中;相應(yīng)的,所述服務(wù)器向至少一個終端發(fā)送所述需要重發(fā)的至少一條應(yīng)用消息,包括:服務(wù)器按照第二隊列從對頭到對尾的順序依次發(fā)送需要重發(fā)的至少一條應(yīng)用消息。示例性的,圖2A和圖2B是根據(jù)一示例性實施例示出的隊列示意圖,如圖2A所示,第一隊列包括:從對頭至對尾的應(yīng)用消息1、應(yīng)用消息2和應(yīng)用消息3,基于該存儲結(jié)構(gòu),服務(wù)器當然先發(fā)送應(yīng)用消息1,再發(fā)送應(yīng)用消息2,最后發(fā)送應(yīng)用消息3;如圖2B所示,假設(shè)應(yīng)用消息1和應(yīng)用消息2都需要重發(fā),則按照發(fā)送順序,將應(yīng)用消息1排列在第二隊列的對頭,然后將應(yīng)用消息2排列在應(yīng)用消息1之后。基于上述實施例的基礎(chǔ),進一步地,本公開實施例還提供如何判斷是否要重發(fā)所述第一條應(yīng)用消息,具體地,圖3是根據(jù)另一示例性實施例示出的一種消息重發(fā)方法的流程圖,本實施例以該消息重發(fā)方法應(yīng)用于服務(wù)器中來舉例說明,該方法的應(yīng)用場景為:服務(wù)器向至少一個終端發(fā)送應(yīng)用消息的場景,該消息重發(fā)方法可以包括如下幾個步驟:在步驟S301中:服務(wù)器判斷是否接收到第一條應(yīng)用消息對應(yīng)的確認Ack消息;在步驟S302中:若服務(wù)器未接收到第一條應(yīng)用消息對應(yīng)的確認Ack消息,則服務(wù)器判斷第一條應(yīng)用消息的計時時間是否小于第二預設(shè)時間,其中第二預設(shè)時間大于第一預設(shè)時間;或者,判斷第一條應(yīng)用消息的重發(fā)次數(shù)是否小于預設(shè)次數(shù)。需要說明的是,上述僅說明了如何判斷是否要重發(fā)第一條應(yīng)用消息,可以采用同樣的方法判斷是否要重發(fā)第i條應(yīng)用消息,其中i=2,3……N,N為待發(fā)送應(yīng)用消息的數(shù)目,N為大于或者等于1的正整數(shù)。其中,服務(wù)器判斷第一條應(yīng)用消息的計時時間是否小于第二預設(shè)時間,一旦確定第一條應(yīng)用消息的計時時間大于或者等于第二預設(shè)時間,則認為超時,這種情況下,服務(wù)器不再重發(fā)第一條應(yīng)用消息;或者,服務(wù)器判斷第一條應(yīng)用消息的重發(fā)次數(shù)是否小于預設(shè)次數(shù),一旦確定第一條應(yīng)用消息的重發(fā)次數(shù)大于或者等于預設(shè)次數(shù),這種情況下,服務(wù)器也不再重發(fā)第一條應(yīng)用消息。本公開實施例中,服務(wù)器通過第一條應(yīng)用消息的計時時間是否小于第二預設(shè)時間,或者,判斷第一條應(yīng)用消息的重發(fā)次數(shù)是否小于預設(shè)次數(shù)來確認是否要重發(fā)第一條應(yīng)用消息?;谏鲜鰧嵤├幕A(chǔ),可選地,在步驟S101之前,消息重發(fā)方法還包括:服務(wù)器生成每條應(yīng)用消息的序列號,將序列號攜帶至每條應(yīng)用消息中,該序列號包括:每條應(yīng)用消息的待發(fā)送時間和待發(fā)送時間內(nèi)服務(wù)器為每條應(yīng)用消息設(shè)置的編號。通常服務(wù)器可以精確到毫秒的時間戳,也就是說所述每條應(yīng)用消息的待發(fā)送時間的單位可以是毫秒,當然也可以是秒,本公開實施例對此不做限制。而待發(fā)送時間內(nèi)服務(wù)器為每條應(yīng)用消息設(shè)置的編號,以用于在同一個待發(fā)送時間下生成不同的序列號。示例性的,假設(shè)應(yīng)用消息1的待發(fā)送時間為:1455508709秒,543毫秒,表示待發(fā)送時間為:11:58:29.543,應(yīng)用消息1對應(yīng)的編號為50,通常編號是從0開始,因此編號50表示在待發(fā)送時間1455508709秒,543毫秒下生成的第51個序列號,如果待發(fā)送時間發(fā)生變化,則編號部分從0開始遞增,本公開實施例對編號位數(shù)不限?;谏鲜鲂蛄刑柕幕A(chǔ),本公開實施例進一步提供如何判斷是否接收到所述第一條應(yīng)用消息對應(yīng)的確認Ack消息。一種可選方式:圖4是根據(jù)再一示例性實施例示出的一種消息重發(fā)方法的流程圖,本實施例以該消息重發(fā)方法應(yīng)用于服務(wù)器中來舉例說明,該方法的應(yīng)用場景為:服務(wù)器向至少一個終端發(fā)送應(yīng)用消息的場景,該消息重發(fā)方法可以包括如下幾個步驟:在步驟S401中:服務(wù)器接收至少一個終端發(fā)送的至少一個確認Ack消息;在步驟S402中:服務(wù)器將至少一個確認Ack消息以哈希表的形式存儲至本地數(shù)據(jù)庫中,該哈希表的每一項包括:每條應(yīng)用消息對應(yīng)的序列號和用于表示每條應(yīng)用消息是否被成功接收的標識信息;示例性的:如表1所示:表1關(guān)鍵字(Key)145550870954350145550870954351145550870954352值(Value)001其中,每條應(yīng)用消息對應(yīng)的序列號作為關(guān)鍵字,0表示該條應(yīng)用消息未被成功接收,1表示該條應(yīng)用消息被成功接收。在步驟S403中:服務(wù)器查詢哈希表判斷是否接收到第一條應(yīng)用消息對應(yīng)的確認Ack消息。例如:查詢序列號為145550870954350的應(yīng)用消息未被成功接收,序列號為145550870954351的應(yīng)用消息也未被成功接收,序列號為145550870954352的應(yīng)用消息被成功接收。另一種可選方式:圖5是根據(jù)又一示例性實施例示出的一種消息重發(fā)方法的流程圖,本實施例以該消息重發(fā)方法應(yīng)用于服務(wù)器中來舉例說明,該方法的應(yīng)用場景為:服務(wù)器向至少一個終端發(fā)送應(yīng)用消息的場景,該消息重發(fā)方法可以包括如下幾個步驟:在步驟S501中:服務(wù)器接收至少一個終端發(fā)送的至少一個確認Ack消息;在步驟S502中:服務(wù)器將至少一個確認Ack消息以位圖的形式存儲至本地數(shù)據(jù)庫中,該位圖的每一項包括:用于表示每條應(yīng)用消息是否被成功接收的標識信息;在步驟S503中:服務(wù)器查詢位圖判斷是否接收到第一條應(yīng)用消息對應(yīng)的確認Ack消息。具體的,由于服務(wù)器向終端發(fā)送的應(yīng)用消息數(shù)量龐大,因此為了避免內(nèi)存占用過高的問題,并保證服務(wù)器確定終端是否接收到Ack消息的速度,服務(wù)器使用位圖bitmap的數(shù)據(jù)結(jié)構(gòu)記錄Ack消息。一種可選方式,具有相同的待發(fā)送時間的應(yīng)用消息對應(yīng)同一個位圖,標識信息按照每條應(yīng)用消息對應(yīng)的編號順序排列在位圖中,例如:結(jié)合表1所示,應(yīng)用消息1的序列號為145550870954350,待發(fā)送時間為1455508709543,編號為50,應(yīng)用消息2的序列號為145550870954351,待發(fā)送時間為1455508709543,編號為51,應(yīng)用消息3的序列號為145550870954352,待發(fā)送時間為1455508709543,編號為52,因此應(yīng)用消息1、應(yīng)用消息2和應(yīng)用消息3對應(yīng)同一個位圖,它們的標識信息分別位于位圖的第51、52和53個位置。另一種可選方式,將具有相同的秒數(shù)的應(yīng)用消息對應(yīng)同一個位圖,應(yīng)用消息的毫秒數(shù)和編號決定它們對應(yīng)的標識信息在位圖中的位置。例如:上述應(yīng)用消息1、應(yīng)用消息2和應(yīng)用消息3對應(yīng)同一個位圖,它們的標識信息分別位于位圖的第54351、54352和54353個位置。需要說明的是;位圖中的每一個比特位可以存儲一個0或1的標識信息,通過偏移量offset指示不同的比特位,其中偏移量從0開始計,假設(shè)位圖中偏移量為0的比特位被置為1,其它位置均未設(shè)置標識信息,則位圖的存儲即為1,如果繼續(xù)設(shè)置偏移量為5的比特位為1,并且設(shè)置偏移量為6的比特位為1,則該位圖的存儲即為1000011。因此位圖存儲占用的空間是和比特位為1的最大偏移量相關(guān),假設(shè)該最大偏移量為N,則存儲即占用N+1個比特位,即(N+1)/8個字節(jié)、(N+1)/8192個千字節(jié)。假設(shè)服務(wù)器在500秒內(nèi)推送了1000萬條應(yīng)用消息,則平均每毫秒推送20條應(yīng)用消息,應(yīng)用消息偏置量的長度平均為5位數(shù),假設(shè)在第1455508709秒的999毫秒推送了20條消息,則該偏置量即為99920,假設(shè)該偏置量為第1455508709秒內(nèi)所有消息中的最大偏置量,那么這該位圖將占用12千字節(jié)的內(nèi)存空間。而在redis數(shù)據(jù)庫中,使用位圖方式存儲1000萬條應(yīng)用消息對應(yīng)的標識消息,只占用16兆字節(jié)的內(nèi)存空間,為不使用位圖方式的五十分之一,因此,位圖存儲方式可以節(jié)省內(nèi)存空間。本公開實施例中,提供了存儲應(yīng)用消息對應(yīng)標識信息的兩種方式,一種為哈希表方式,另一種是位圖方式,通過哈希表存儲方式可以提高查詢效率,進而提高重發(fā)效率,通過位圖方式可以達到節(jié)省內(nèi)存空間的目的。圖6是根據(jù)一示例性實施例示出的一種消息重發(fā)裝置的框圖,該消息重發(fā)裝置可以通過軟件、硬件或者兩者的結(jié)合實現(xiàn)成為服務(wù)器的部分或者全部。所述裝置的應(yīng)用場景為:該消息重發(fā)裝置向至少一個終端發(fā)送應(yīng)用消息的場景,其中該裝置包括:發(fā)送模塊61,被配置為執(zhí)行步驟S101:向至少一個終端發(fā)送至少一條應(yīng)用消息,并對所述至少一條應(yīng)用消息中的每條應(yīng)用消息從發(fā)送時刻開始計時;判斷模塊62,被配置為執(zhí)行步驟S102:判斷第一條應(yīng)用消息的計時時間是否達到第一預設(shè)時間,若是,則判斷是否要重發(fā)所述第一條應(yīng)用消息,并且將第二條應(yīng)用消息作為新的第一條應(yīng)用消息,繼續(xù)判斷所述新的第一條應(yīng)用消息的計時時間是否達到所述第一預設(shè)時間,若是,則判斷是否要重發(fā)所述新的第一條應(yīng)用消息,直至判斷完是否要重發(fā)最后一條應(yīng)用消息為止;發(fā)送模塊61,還被配置為執(zhí)行步驟S103:當需要重發(fā)至少一條應(yīng)用消息時,則發(fā)送模塊61和判斷模塊62繼續(xù)執(zhí)行步驟S101至步驟S103;否則,則發(fā)送模塊61停止重發(fā)。也就是說,當需要重發(fā)至少一條應(yīng)用消息時,則發(fā)送模塊61繼續(xù)執(zhí)行步驟S101,然后判斷模塊62繼續(xù)執(zhí)行步驟102,發(fā)送模塊61繼續(xù)執(zhí)行步驟S103,否則,則發(fā)送模塊61停止重發(fā)。關(guān)于上述實施例中的裝置,其中各個模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實施例中進行了詳細描述,此處將不做詳細闡述說明?;谏弦粚嵤├幕A(chǔ),進一步地,圖7是根據(jù)另一示例性實施例示出的一種消息重發(fā)裝置的框圖,該消息重發(fā)裝置可以通過軟件、硬件或者兩者的結(jié)合實現(xiàn)成為服務(wù)器的部分或者全部。所述裝置的應(yīng)用場景為:該消息重發(fā)裝置向至少一個終端發(fā)送應(yīng)用消息的場景,其中該裝置還包括:第一存儲模塊63,被配置為將所述至少一條應(yīng)用消息按照發(fā)送順序依次存儲至第一隊列的對尾中;相應(yīng)的,所述發(fā)送模塊61,具體被配置為按照所述第一隊列從對頭到對尾的順序依次發(fā)送所述至少一條應(yīng)用消息??蛇x地,還包括:第二存儲模塊64,被配置為將所述需要重發(fā)的至少一條應(yīng)用消息按照發(fā)送順序依次存儲至第二隊列的對尾中;相應(yīng)的,所述發(fā)送模塊61,具體被配置為按照所述第二隊列從對頭到對尾的順序依次發(fā)送所述需要重發(fā)的至少一條應(yīng)用消息。可選地,所述判斷模塊62具體被配置為:判斷是否接收到所述第一條應(yīng)用消息對應(yīng)的確認Ack消息;若判斷未接收到所述第一條應(yīng)用消息對應(yīng)的確認Ack消息,則判斷所述第一條應(yīng)用消息的計時時間是否小于第二預設(shè)時間,其中所述第二預設(shè)時間大于所述第一預設(shè)時間;或者,判斷所述第一條應(yīng)用消息的重發(fā)次數(shù)是否小于預設(shè)次數(shù)??蛇x地,還包括生成模塊65,被配置為生成所述每條應(yīng)用消息的序列號,將所述序列號攜帶至所述每條應(yīng)用消息中,所述序列號包括:所述每條應(yīng)用消息的待發(fā)送時間和所述待發(fā)送時間內(nèi)所述裝置為所述每條應(yīng)用消息設(shè)置的編號??蛇x地,還包括:第一接收模塊66,被配置為接收所述至少一個終端發(fā)送的至少一個確認Ack消息;第三存儲模塊67,被位置為將所述至少一個確認Ack消息以哈希表的形式存儲至本地數(shù)據(jù)庫中,所述哈希表的每一項包括:所述每條應(yīng)用消息對應(yīng)的序列號和用于表示所述每條應(yīng)用消息是否被成功接收的標識信息;相應(yīng)的,所述判斷模塊62,具體被配置為查詢所述哈希表判斷是否接收到所述第一條應(yīng)用消息對應(yīng)的確認Ack消息??蛇x地,還包括:第二接收模塊68,被配置為接收所述至少一個終端發(fā)送的至少一個確認Ack消息;第四存儲模塊69,被配置為將所述至少一個確認Ack消息以位圖的形式存儲至本地數(shù)據(jù)庫中,所述位圖的每一項包括:用于表示所述每條應(yīng)用消息是否被成功接收的標識信息;相應(yīng)的,所述判斷模塊62,具體被配置為查詢所述位圖判斷是否接收到所述第一條應(yīng)用消息對應(yīng)的確認Ack消息。關(guān)于上述實施例中的裝置,其中各個模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實施例中進行了詳細描述,此處將不做詳細闡述說明。圖8是根據(jù)另一示例性實施例示出的一種用于消息重發(fā)裝置的框圖,該消息重發(fā)裝置可以通過軟件、硬件或者兩者的結(jié)合實現(xiàn)成為服務(wù)器的部分或者全部。所述裝置的應(yīng)用場景為:該消息重發(fā)裝置向至少一個終端發(fā)送應(yīng)用消息的場景,其中該裝置包括:處理器81、發(fā)送器82和用于存儲所述處理器81的可執(zhí)行指令的存儲器83;其中,所述發(fā)送器82,被配置為執(zhí)行步驟S101:向至少一個終端發(fā)送至少一條應(yīng)用消息,并對所述至少一條應(yīng)用消息中的每條應(yīng)用消息從發(fā)送時刻開始計時;所述處理器81,被配置為執(zhí)行步驟S102:判斷第一條應(yīng)用消息的計時時間是否達到第一預設(shè)時間,若是,則判斷是否要重發(fā)所述第一條應(yīng)用消息,并且將第二條應(yīng)用消息作為新的第一條應(yīng)用消息,繼續(xù)判斷所述新的第一條應(yīng)用消息的計時時間是否達到所述第一預設(shè)時間,若是,則判斷是否要重發(fā)所述新的第一條應(yīng)用消息,直至判斷完是否要重發(fā)最后一條應(yīng)用消息為止;所述發(fā)送器82,還被配置為執(zhí)行步驟S103:當需要重發(fā)至少一條應(yīng)用消息時,則所述發(fā)送器和所述處理器繼續(xù)執(zhí)行步驟S101至步驟S103;否則,則所述發(fā)送器82停止重發(fā)。關(guān)于上述實施例中的裝置,其中各個器件執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實施例中進行了詳細描述,此處將不做詳細闡述說明。圖9是根據(jù)一示例性實施例示出的一種用于消息重發(fā)裝置900的框圖,例如,裝置900可以被提供為一服務(wù)器。參照圖9,裝置900包括處理組件922,其進一步包括一個或多個處理器,以及由存儲器932所代表的存儲器資源,用于存儲可由處理組件922的執(zhí)行的指令,例如應(yīng)用程序。存儲器932中存儲的應(yīng)用程序可以包括一個或一個以上的每一個對應(yīng)于一組指令的模塊。裝置900還可以包括一個電源組件926被配置為執(zhí)行裝置900的電源管理,一個有線或無線網(wǎng)絡(luò)接口950被配置為將裝置900連接到網(wǎng)絡(luò),和一個輸入輸出(I/O)接口958。裝置900可以操作基于存儲在存儲器932的操作系統(tǒng),例如WindowsServerTM,MacOSXTM,UnixTM,LinuxTM,F(xiàn)reeBSDTM或類似。輸入輸出(I/O)接口958,被配置為執(zhí)行步驟S101:向至少一個終端發(fā)送至少一條應(yīng)用消息,并對所述至少一條應(yīng)用消息中的每條應(yīng)用消息從發(fā)送時刻開始;處理組件922被配置為執(zhí)行步驟S102:判斷第一條應(yīng)用消息的計時時間是否達到第一預設(shè)時間,若是,則判斷是否要重發(fā)所述第一條應(yīng)用消息,并且將第二條應(yīng)用消息作為新的第一條應(yīng)用消息,繼續(xù)判斷所述新的第一條應(yīng)用消息的計時時間是否達到所述第一預設(shè)時間,若是,則判斷是否要重發(fā)所述新的第一條應(yīng)用消息,直至判斷完是否要重發(fā)最后一條應(yīng)用消息為止;輸入輸出(I/O)接口958,還被配置為執(zhí)行步驟S103:當需要重發(fā)至少一條應(yīng)用消息時,則所述輸入輸出(I/O)接口958,和處理組件922繼續(xù)執(zhí)行步驟S101至步驟S103;否則,則輸入輸出(I/O)接口958停止重發(fā)。關(guān)于上述實施例中的裝置,其中各個器件執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實施例中進行了詳細描述,此處將不做詳細闡述說明。本領(lǐng)域技術(shù)人員在考慮說明書及實踐這里公開的發(fā)明后,將容易想到本公開的其它實施方案。本申請旨在涵蓋本公開的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開的一般性原理并包括本公開未公開的本
技術(shù)領(lǐng)域:
中的公知常識或慣用技術(shù)手段。說明書和實施例僅被視為示例性的,本公開的真正范圍和精神由下面的權(quán)利要求書指出。應(yīng)當理解的是,本公開并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進行各種修改和改變。本公開的范圍僅由所附的權(quán)利要求書來限制。當前第1頁1 2 3