亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

消息處理方法和裝置與流程

文檔序號:11234518閱讀:1265來源:國知局
消息處理方法和裝置與流程

本發(fā)明涉及消息處理領(lǐng)域,具體而言,涉及一種消息處理方法和裝置。



背景技術(shù):

目前,不穩(wěn)定的網(wǎng)絡(luò)環(huán)境會影響客戶端對消息的處理效率,主要體現(xiàn)為在2g/3g/4g網(wǎng)、無線局域網(wǎng)(wireless-fidelity,簡稱為wifi)的頻繁切換,以及移動網(wǎng)絡(luò)的延遲和波動,比如,當(dāng)前手游存在的重要問題之一為網(wǎng)絡(luò)環(huán)境不穩(wěn)定。這種不穩(wěn)定的網(wǎng)絡(luò)環(huán)境給客戶端的消息處理帶來了以下幾個主要問題:

(1)使客戶端與服務(wù)器間之間的數(shù)據(jù)傳輸不一致;

(2)由于缺乏網(wǎng)絡(luò)連接狀態(tài)管理而導(dǎo)致在弱網(wǎng)時的用戶體驗低;

(3)由于會出現(xiàn)不必要的重連、重登陸等,帶來流量的耗費(fèi)。

另外,目前對消息的管理方式是基于消息類型的,這種方式通過消息的類型(msgtype)來標(biāo)識一條消息,它的好處是易于實現(xiàn)。因為消息收發(fā)庫自帶消息類型,只要根據(jù)內(nèi)部定義的消息類型來管理消息即可。但是,如果存在兩條或以上同種類型的消息時,就無法對其做唯一標(biāo)識。這樣當(dāng)網(wǎng)絡(luò)較差,出現(xiàn)丟包的情況時,客戶端就無法區(qū)分服務(wù)器回復(fù)的哪條發(fā)送消息,從而導(dǎo)致消息處理的效率低下。

現(xiàn)有的手游的連接管理是對關(guān)鍵狀態(tài)的追蹤,主要包含連接中、連接超時、連接斷開三個狀態(tài)。然而,由于對狀態(tài)缺乏細(xì)分和轉(zhuǎn)移建模,并沒有基于狀態(tài)細(xì)分以及狀態(tài)間轉(zhuǎn)移關(guān)系來給游戲玩家更精確的反饋,顯然也不能滿足日益增進(jìn)的用戶需求。

針對上述對消息處理的效率低下的問題,目前尚未提出有效的解決方案。



技術(shù)實現(xiàn)要素:

本發(fā)明實施例提供了一種消息處理方法和裝置,以至少解決相關(guān)技術(shù)中對消息處理的效率低下的技術(shù)問題。

根據(jù)本發(fā)明實施例的一個方面,提供了一種消息處理方法。該方法包括:從消息隊列中獲取第一消息,其中,消息隊列中存儲多條待發(fā)送消息;當(dāng)?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務(wù)器發(fā)送第一消息和第一序號,其中,第一序號用于對第一消息進(jìn)行標(biāo)識;接收服務(wù)器發(fā)送的第一響應(yīng)消息,其中,第一響應(yīng)消息用于表示服務(wù)器已對第一消息進(jìn)行處理,第一響應(yīng)消息攜帶有第一序號;從消息隊列中移除第一消息。

根據(jù)本發(fā)明實施例的另一個方面,還提供了一種消息處理方法。該方法包括:接收消息隊列中的第一消息和第一序號,其中,消息隊列中存儲多條待發(fā)送消息,第一消息的類型為第一類型,第一序號用于對第一消息進(jìn)行標(biāo)識;對第一消息進(jìn)行處理,得到第一響應(yīng)消息,其中,第一響應(yīng)消息攜帶有第一序號;向客戶端發(fā)送第一響應(yīng)消息,其中,在客戶端接收到第一響應(yīng)消息之后,第一消息移除了消息隊列。

根據(jù)本發(fā)明實施例的另一個方面,還提供了一種消息處理裝置。該裝置包括:獲取單元,用于從消息隊列中獲取第一消息,其中,消息隊列中存儲多條待發(fā)送消息;發(fā)送單元,用于當(dāng)?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務(wù)器發(fā)送第一消息和第一序號,其中,第一序號用于對第一消息進(jìn)行標(biāo)識;接收單元,用于接收服務(wù)器發(fā)送的第一響應(yīng)消息,其中,第一響應(yīng)消息用于表示服務(wù)器已對第一消息進(jìn)行處理,第一響應(yīng)消息攜帶有第一序號;移除單元,用于從消息隊列中移除第一消息。

根據(jù)本發(fā)明實施例的另一方面,還提供了一種消息處理裝置。該裝置包括:接收單元,用于接收消息隊列中的第一消息和第一序號,其中,消息隊列中存儲多條待發(fā)送消息,第一消息的類型為第一類型,第一序號用于對第一消息進(jìn)行標(biāo)識;處理單元,用于對第一消息進(jìn)行處理,得到第一響應(yīng)消息,其中,第一響應(yīng)消息攜帶有第一序號;發(fā)送單元,用于向客戶端發(fā)送第一響應(yīng)消息,其中,在客戶端接收到第一響應(yīng)消息之后,第一消息移除了消息隊列。

在本發(fā)明實施例中,從消息隊列中獲取第一消息,其中,消息隊列中存儲多條待發(fā)送消息;當(dāng)?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務(wù)器發(fā)送第一消息和第一序號,其中,第一序號用于對第一消息進(jìn)行標(biāo)識;接收服務(wù)器發(fā)送的第一響應(yīng)消息,其中,第一響應(yīng)消息用于表示服務(wù)器已對第一消息進(jìn)行處理,第一響應(yīng)消息攜帶有第一序號;從消息隊列中移除第一消息,由于通過給消息隊列中的消息添加唯一序號,接收到服務(wù)器發(fā)送的響應(yīng)消息中自帶對應(yīng)的序號,這樣客戶端在處理收到的響應(yīng)消息便能對其唯一標(biāo)識,從而保證客戶端與服務(wù)器之間數(shù)據(jù)的一致性,達(dá)到了提高消息處理效率的技術(shù)效果,進(jìn)而解決了相關(guān)技術(shù)中對消息處理的效率低下的技術(shù)問題。

附圖說明

此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:

圖1是根據(jù)本發(fā)明實施例的一種消息處理方法的硬件環(huán)境的示意圖;

圖2是根據(jù)本發(fā)明實施例的一種消息處理方法的流程圖;

圖3是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖;

圖4是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖;

圖5是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖;

圖6是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖;

圖7是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖;

圖8是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖;

圖9是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖;

圖10是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖;

圖11是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖;

圖12是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖;

圖13是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖;

圖14是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖;

圖15是根據(jù)本發(fā)明實施例的一種基于客戶端的消息發(fā)送方法的交互流程圖;

圖16是根據(jù)本發(fā)明實施例的一種基于服務(wù)器的消息接收的流程圖;

圖17是根據(jù)本發(fā)明實施例的一種客戶端的連接狀態(tài)機(jī)的示意圖;

圖18是根據(jù)本發(fā)明實施例的一種消息提示的界面示意圖;

圖19是根據(jù)本發(fā)明實施例的另一種消息提示的界面示意圖;

圖20是根據(jù)本發(fā)明實施例的一種消息處理裝置的示意圖;

圖21是根據(jù)本發(fā)明實施例的另一種消息處理裝置的示意圖;以及

圖22是根據(jù)本發(fā)明實施例的一種終端的結(jié)構(gòu)框圖。

具體實施方式

為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。

需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。

實施例1

根據(jù)本發(fā)明實施例,提供了一種消息處理方法的實施例。

可選地,在本實施例中,上述消息處理方法可以應(yīng)用于如圖1所示的由服務(wù)器102和終端104所構(gòu)成的硬件環(huán)境中。圖1是根據(jù)本發(fā)明實施例的一種消息處理方法的硬件環(huán)境的示意圖。如圖1所示,服務(wù)器102通過網(wǎng)絡(luò)與終端104進(jìn)行連接,上述網(wǎng)絡(luò)包括但不限于:廣域網(wǎng)、城域網(wǎng)或局域網(wǎng),終端104并不限定于pc、手機(jī)、平板電腦等。本發(fā)明實施例的消息處理方法可以由服務(wù)器102來執(zhí)行,也可以由終端104來執(zhí)行,還可以是由服務(wù)器102和終端104共同執(zhí)行。其中,終端104執(zhí)行本發(fā)明實施例的消息處理方法也可以是由安裝在其上的客戶端來執(zhí)行。

圖2是根據(jù)本發(fā)明實施例的一種消息處理方法的流程圖。如圖2所示,該方法可以包括以下步驟:

步驟s202,從消息隊列中獲取第一消息。

在本發(fā)明上述步驟s202提供的技術(shù)方案中,從消息隊列中獲取第一消息,其中,消息隊列中存儲多條待發(fā)送消息。

該實施例的消息隊列用于存儲客戶端向服務(wù)器待發(fā)的多條消息,該消息可以為在客戶端向服務(wù)器發(fā)送查詢請求時發(fā)送的消息,比如,在客戶端拉取玩家等級使用的普通消息,也可以為在客戶端向服務(wù)器發(fā)送更新請求時發(fā)送的消息,比如,在客戶端購買物品、領(lǐng)取獎勵時使用的阻塞消息,其中,客戶端可以為游戲客戶端。

在預(yù)設(shè)網(wǎng)絡(luò)環(huán)境下,從消息隊列中獲取第一消息,該第一消息為插入消息隊列中的消息。該預(yù)設(shè)網(wǎng)絡(luò)環(huán)境可以為網(wǎng)絡(luò)環(huán)境不穩(wěn)定的網(wǎng)絡(luò)環(huán)境,比如,在2g/3g/4g、wifi的頻繁切換的網(wǎng)絡(luò)環(huán)境下,可以為移動網(wǎng)絡(luò)的延遲和波動的網(wǎng)絡(luò)環(huán)境。

步驟s204,當(dāng)?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務(wù)器發(fā)送第一消息和第一序號。

在本發(fā)明上述步驟s204提供的技術(shù)方案中,當(dāng)?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務(wù)器發(fā)送第一消息和第一序號,其中,第一序號用于對第一消息進(jìn)行標(biāo)識。

消息隊列中的每個消息通過序號進(jìn)行唯一標(biāo)識,可選地,消息隊列中的消息的序號按照發(fā)送的時間遞增,客戶端也可以在消息發(fā)送的時候,賦予消息對應(yīng)的序號。

消息隊列中的消息具有不同的類型,在從消息隊列中獲取第一消息之后,判斷第一消息的類型。該第一類型的消息在向客戶端發(fā)送時會阻塞消息隊列中位于該第一消息之后的消息,也即,在客戶端接收到服務(wù)器對第一消息進(jìn)行響應(yīng)的響應(yīng)消息之前,暫停發(fā)送在消息隊列中的第一消息之后的消息,直到在客戶端接收到服務(wù)器對第一消息進(jìn)行響應(yīng)的響應(yīng)消息之后,才可以發(fā)送消息隊列中的第一消息之后的消息,該第一類型的第一消息為阻塞消息??蛇x地,第一類型的消息會帶來后臺數(shù)據(jù)的變化,可以為在對客戶端執(zhí)行更新操作下的更新類消息,比如,為用于購買物品的消息、用于領(lǐng)取獎勵的消息。

在客戶端與服務(wù)器建立連接的情況下,在判斷第一消息的類型之后,如果判斷出第一消息的類型為第一類型時,向服務(wù)器發(fā)送第一消息和第一序號,該第一序號用于對第一消息進(jìn)行標(biāo)識,從而將第一消息與消息隊列中的其它消息區(qū)分開。可選地,在判斷第一消息的類型之后,如果判斷出第一消息的類型為第一類型時,向客戶端發(fā)送用于請求服務(wù)器對第一消息進(jìn)行處理的請求,該請求攜帶有第一消息和第一序號。

可選地,在客戶端向服務(wù)器發(fā)送第一消息之后,顯示出啟動消息阻塞的界面,從而避免用戶對客戶端操作多次。

步驟s206,接收服務(wù)器發(fā)送的第一響應(yīng)消息。

在本發(fā)明上述步驟s206提供的技術(shù)方案中,接收服務(wù)器發(fā)送的第一響應(yīng)消息,其中,第一響應(yīng)消息用于表示服務(wù)器已對第一消息進(jìn)行處理,第一響應(yīng)消息攜帶有第一序號。

在向服務(wù)器發(fā)送第一消息和第一序號之后,服務(wù)器對第一消息進(jìn)行處理,得到第一響應(yīng)消息。可選地,服務(wù)器在接收到第一消息和第一序號之后,判斷有沒有緩存過第一序號,如果服務(wù)器沒有緩存過第一序號,則該第一消息是第一次向服務(wù)器發(fā)送的消息,服務(wù)器對第一消息進(jìn)行處理,得到第一響應(yīng)消息;如果判斷出服務(wù)器緩存過第一序號,則該第一消息為在斷線重連之后,重新向服務(wù)器發(fā)送的消息,則服務(wù)器直接向客戶端發(fā)送之前已經(jīng)對第一消息進(jìn)行處理得到的第一響應(yīng)消息。

可選地,服務(wù)器在接收到對攜帶有第一消息和第一序號的請求之后,對該請求進(jìn)行響應(yīng),得到第一響應(yīng)消息,該第一響應(yīng)消息也即為服務(wù)器對第一消息進(jìn)行處理得到的回包消息。

上述響應(yīng)消息用于表示服務(wù)器已經(jīng)對第一消息進(jìn)行處理,并且攜帶有第一序號,也即,第一響應(yīng)消息通過第一序號進(jìn)行唯一標(biāo)識。服務(wù)器在對第一消息進(jìn)行處理得到第一響應(yīng)消息之后,可以對第一響應(yīng)消息和第一序號進(jìn)行緩存,也可以通過與后續(xù)發(fā)送的消息對應(yīng)的響應(yīng)消息和對應(yīng)的序號進(jìn)行更新。

客戶端接收服務(wù)器發(fā)送的第一響應(yīng)消息,由于該第一響應(yīng)消息也攜帶用于標(biāo)識第一消息的第一序號,因而客戶端可以唯一確認(rèn)第一響應(yīng)消息為服務(wù)器對第一消息進(jìn)行處理得到的響應(yīng)消息,從而確保了客戶端和服務(wù)器之間發(fā)送與接收的數(shù)據(jù)的一致性,避免了由于網(wǎng)絡(luò)環(huán)境不穩(wěn)定而導(dǎo)致的客戶端與服務(wù)器間的數(shù)據(jù)不一致,進(jìn)而有利于客戶端與服務(wù)器之間進(jìn)行正常的數(shù)據(jù)通信。

步驟s208,從消息隊列中移除第一消息。

在本發(fā)明上述步驟s208提供的技術(shù)方案中,從消息隊列中移除第一消息。

在接收服務(wù)器發(fā)送的第一響應(yīng)消息之后,客戶端從消息隊列中移除第一消息,此時,該消息隊列中的第一消息之后的消息才可以發(fā)送。

通過上述步驟s202至步驟s208,在本發(fā)明實施例中,從消息隊列中獲取第一消息,其中,消息隊列中存儲多條待發(fā)送消息;當(dāng)?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務(wù)器發(fā)送第一消息和第一序號,其中,第一序號用于對第一消息進(jìn)行標(biāo)識;接收服務(wù)器發(fā)送的第一響應(yīng)消息,其中,第一響應(yīng)消息用于表示服務(wù)器已對第一消息進(jìn)行處理,第一響應(yīng)消息攜帶有第一序號;從消息隊列中移除第一消息,由于通過給消息隊列中的消息添加唯一序號,接收到服務(wù)器發(fā)送的響應(yīng)消息中自帶對應(yīng)的序號,這樣客戶端在處理收到的響應(yīng)消息便能對其唯一標(biāo)識,確保了客戶端與服務(wù)器之間數(shù)據(jù)的同步,保證了客戶端與服務(wù)器之間數(shù)據(jù)的一致性,達(dá)到了提高消息處理效率的技術(shù)效果,進(jìn)而解決了相關(guān)技術(shù)中對消息處理的效率低下的技術(shù)問題。

作為一種可選的實施方式,在步驟s204向服務(wù)器發(fā)送第一消息和第一序號之后、且在步驟s206接收服務(wù)器發(fā)送的第一響應(yīng)消息之前,該消息方法還包括:接收到插入到消息隊列中的第二消息,其中,第二消息的類型為第二類型;在從消息隊列中移除第一消息之后,向服務(wù)器發(fā)送第二消息。

消息隊列中存儲的消息可以不斷地插入消息。在客戶端向服務(wù)器發(fā)送第一消息和第一序號之后,且在客戶端接收服務(wù)器發(fā)送的第一響應(yīng)消息之前,接收到消息隊列中的第二消息,該第二消息在消息隊列中位于第一消息之后。由于第一消息的類型為第一類型,也即,第一消息為阻塞消息,因而第二消息為被第一消息在消息隊列中阻塞的消息。第二消息的類型與第一消息的類型不同,可以為消息的普通類型。該第二消息可以為在客戶端執(zhí)行查詢操作下的查詢類消息,比如,用于拉取玩家等級的消息。

在客戶端接收到第一響應(yīng)消息之后,客戶端從消息隊列中移除第一消息。在客戶端從消息隊列中移除第一消息之后,客戶端停止對消息隊列中的第二消息進(jìn)行阻塞,向服務(wù)器發(fā)送上述第二消息。

可選地,在客戶端向服務(wù)器發(fā)送第二消息時,賦予第二消息的序號為大于第二序號。

作為一種可選的實施方式,在向服務(wù)器發(fā)送第二消息時,該消息處理方法還包括:從消息隊列中移除第二消息。

第二類型的消息不會影響后臺數(shù)據(jù)的變化,客戶端在向服務(wù)器發(fā)送第二類型的第二消息時,可以直接從消息隊列中移除,從而確保位于消息隊列中的第二消息之后的消息可以正常發(fā)出,提高消息的處理效率。

作為一種可選的實施方式,向服務(wù)器發(fā)送第二消息包括:向服務(wù)器發(fā)送第二消息和用于對第二消息進(jìn)行標(biāo)識的第二序號;在向服務(wù)器發(fā)送第二消息之后,該消息處理方法還包括:接收服務(wù)器發(fā)送的表示服務(wù)器已對第二消息進(jìn)行處理的第二響應(yīng)消息,第二響應(yīng)消息攜帶有第二序號。

圖3是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖3所示,該方法還包括以下步驟:

步驟s301,向服務(wù)器發(fā)送第二消息和第二序號。

在本發(fā)明上述步驟s301提供的技術(shù)方案中,向服務(wù)器發(fā)送第二消息和第二序號。

第二消息的類型為消息的普通類型,可以通過預(yù)設(shè)序號進(jìn)行標(biāo)識。在消息隊列中位于第一消息之后的第二消息通過第二序號進(jìn)行標(biāo)識,第二序號為上述預(yù)設(shè)序號,比如,第二序號為0??蛇x地,當(dāng)消息隊列中的消息的序號為0時,可以確定消息的類型為第二類型,也即,確定消息的類型為普通類型。

在從消息隊列中移除第一消息之后,向服務(wù)器發(fā)送第二消息和第二序號??蛇x地,向客戶端發(fā)送用于請求服務(wù)器對第二消息進(jìn)行處理的請求,該請求攜帶有第二消息和第二序號。

步驟s302,接收服務(wù)器發(fā)送的第二響應(yīng)消息。

在本發(fā)明上述步驟s302提供的技術(shù)方案中,接收服務(wù)器發(fā)送的第二響應(yīng)消息。

在向服務(wù)器發(fā)送第二消息和第二序號之后,服務(wù)器對第二消息進(jìn)行處理,得到第二響應(yīng)消息??蛇x地,服務(wù)器在接收到對攜帶有第二消息和第二序號的請求之后,對該請求進(jìn)行響應(yīng),得到第二響應(yīng)消息,該第二響應(yīng)消息也即為服務(wù)器對第二消息進(jìn)行處理得到的回包消息,服務(wù)器直接對第二消息進(jìn)行處理并返回。上述第二響應(yīng)消息用于表示服務(wù)器已經(jīng)對第二消息進(jìn)行處理,并且攜帶有第二序號,也即,第二響應(yīng)消息通過第二序號進(jìn)行唯一標(biāo)識。

由于第二響應(yīng)消息也攜帶用于標(biāo)識第二消息的第二序號,因而客戶端可以唯一確認(rèn)第二響應(yīng)消息為服務(wù)器對第二消息進(jìn)行處理得到的響應(yīng)消息,從而確保了客戶端和服務(wù)器之間發(fā)送與接收的數(shù)據(jù)的一致性,進(jìn)而有利于客戶端與服務(wù)器之間進(jìn)行正常的數(shù)據(jù)通信。

該實施例在在從消息隊列中移除第一消息之后,向服務(wù)器發(fā)送第二消息和第二序號,其中,第二序號用于對第二消息進(jìn)行標(biāo)識;在向服務(wù)器發(fā)送第二消息之后,接收服務(wù)器發(fā)送的第二響應(yīng)消息,其中,第二響應(yīng)消息用于表示服務(wù)器已對第二消息進(jìn)行處理,第二響應(yīng)消息攜帶有第二序號,從而實現(xiàn)對消息的處理,由于通過給消息隊列中的消息添加唯一序號,接收到服務(wù)器發(fā)送的響應(yīng)消息中自帶對應(yīng)的序號,這樣客戶端在處理收到的響應(yīng)消息便能對其唯一標(biāo)識,從而保證了客戶端與服務(wù)器之間數(shù)據(jù)的一致性,達(dá)到了提高消息處理效率的技術(shù)效果。

作為一種可選的實施方式,在步驟s202從消息隊列中獲取第一消息之后,當(dāng)?shù)谝幌⒌念愋蜑榈诙愋蜁r,向服務(wù)器發(fā)送第一消息和第一序號,并從消息隊列中移除第一消息;接收服務(wù)器發(fā)送的第一響應(yīng)消息。

圖4是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖4所示,該方法還包括以下步驟:

步驟s401,當(dāng)?shù)谝幌⒌念愋蜑榈诙愋蜁r,向服務(wù)器發(fā)送第一消息和第一序號,并從消息隊列中移除第一消息。

在本發(fā)明上述步驟s401提供的技術(shù)方案中,當(dāng)?shù)谝幌⒌念愋蜑榈诙愋蜁r,向服務(wù)器發(fā)送第一消息和第一序號,并從消息隊列中移除第一消息。

消息的類型包括第一類型和第二類型。其中,第一類型可以為阻塞消息類型,第二類型可以為普通消息,在從消息隊列中獲取第一消息之后,判斷第一消息的類型。如果判斷出第一消息的類型為第二類型時,也即,第一消息為普通消息,則客戶端向服務(wù)器發(fā)送第一消息和用于對第一消息進(jìn)行標(biāo)識的第一序號,并且直接將第一消息從消息隊列中移除。

步驟s402,接收服務(wù)器發(fā)送的第一響應(yīng)消息。

在本發(fā)明上述步驟s402提供的技術(shù)方案中,接收服務(wù)器發(fā)送的第一響應(yīng)消息。

在向服務(wù)器發(fā)送第一消息和第一序號且將第一消息從消息隊列中直接移除之后,服務(wù)器對第一消息進(jìn)行處理,得到第一響應(yīng)消息??蛇x地,服務(wù)器在接收到對攜帶有第一消息和第一序號的請求之后,直接對該請求進(jìn)行響應(yīng),得到第一響應(yīng)消息。服務(wù)器在對第一消息進(jìn)行處理得到第一響應(yīng)消息之后,可以不對第一響應(yīng)消息和第一序號進(jìn)行緩存。

該實施例在從消息隊列中獲取第一消息之后,當(dāng)?shù)谝幌⒌念愋蜑榈诙愋蜁r,向服務(wù)器發(fā)送第一消息和第一序號,并從消息隊列中移除第一消息;接收服務(wù)器發(fā)送的第一響應(yīng)消息,從而實現(xiàn)客戶端與服務(wù)器之間數(shù)據(jù)的同步,提高了消息的處理效率。

作為一種可選的實施方式,在步驟s204向服務(wù)器發(fā)送第一消息和第一序號之后、且在步驟s206接收服務(wù)器發(fā)送的第一響應(yīng)消息之前,接收到插入到消息隊列中的第三消息,其中,第三消息的類型為第一類型;在從消息隊列中移除第一消息之后,該消息處理方法還包括:向服務(wù)器發(fā)送第三消息和第三序號,其中,第三序號用于對第三消息進(jìn)行標(biāo)識,第三序號大于第一序號;接收服務(wù)器發(fā)送的用于表示服務(wù)器已對第三消息進(jìn)行處理的第三響應(yīng)消息;從消息隊列中移除第三消息。

圖5是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖5所示,該方法還包括以下步驟:

步驟s501,向服務(wù)器發(fā)送第三消息和第三序號。

在本發(fā)明上述步驟s501提供的技術(shù)方案中,向服務(wù)器發(fā)送第三消息和第三序號,其中,第三序號用于對第三消息進(jìn)行標(biāo)識,第三序號大于第一序號。

消息隊列中存儲的消息可以不斷地插入消息。在向服務(wù)器發(fā)送第一消息和第一序號之后、且在接收服務(wù)器發(fā)送的第一響應(yīng)消息之前,接收到消息隊列中的第三消息,該第三消息在消息隊列中位于第一消息之后,也即,為被第一消息阻塞的消息。第三消息的類型與第一消息的類型相同,為阻塞消息類型,也即,在客戶端接收到服務(wù)器對第三消息進(jìn)行響應(yīng)的響應(yīng)消息之前,在消息隊列中的第三消息之后的消息暫停發(fā)送,直到在客戶端接收到服務(wù)器對第三消息進(jìn)行響應(yīng)的響應(yīng)消息之后,才可以發(fā)送消息隊列中的第三消息之后的消息,可以為在客戶端執(zhí)行更新操作下的更新類消息,比如,用于購買物品、領(lǐng)取獎勵等消息。

在客戶端接收到第一響應(yīng)消息之后,客戶端從消息隊列中移除第一消息。在客戶端從消息隊列中移除第一消息之后,客戶端停止對消息隊列中的第三消息進(jìn)行阻塞,客戶端向服務(wù)器發(fā)送上述第三消息和用于對第三消息進(jìn)行標(biāo)識的第三序號,該第三消息的第三序號大于第一消息的第一序號,也即,第三消息為新的阻塞消息??蛇x地,向客戶端發(fā)送用于請求服務(wù)器對第三消息進(jìn)行處理的請求,該請求攜帶有第三消息和第三序號。

可選地,在客戶端向服務(wù)器發(fā)送第三消息時,賦予第三消息的序號為大于第一序號的第三序號。

步驟s502,接收服務(wù)器發(fā)送的第三響應(yīng)消息。

在本發(fā)明上述步驟s502提供的技術(shù)方案中,接收服務(wù)器發(fā)送的第三響應(yīng)消息,其中,第三響應(yīng)消息用于表示服務(wù)器已對第三消息進(jìn)行處理,第三響應(yīng)消息攜帶有第三序號。

在向服務(wù)器發(fā)送第三消息和第三序號之后,服務(wù)器對第三消息進(jìn)行處理,得到第三響應(yīng)消息??蛇x地,服務(wù)器在接收到對攜帶有第三消息和第三序號的請求之后,對該請求進(jìn)行響應(yīng),得到第三響應(yīng)消息。上述第三響應(yīng)消息用于表示服務(wù)器已經(jīng)對第三消息進(jìn)行處理,并且攜帶有第三序號,也即,第三響應(yīng)消息通過第三序號進(jìn)行唯一標(biāo)識。

由于第三響應(yīng)消息也攜帶用于標(biāo)識第三消息的第三序號,因而客戶端可以唯一確認(rèn)第三響應(yīng)消息為服務(wù)器對第三消息進(jìn)行處理得到的響應(yīng)消息,從而確保了客戶端和服務(wù)器之間發(fā)送與接收的數(shù)據(jù)的一致性,進(jìn)而有利于客戶端與服務(wù)器之間進(jìn)行正常的數(shù)據(jù)通信。

步驟s503,從消息隊列中移除第三消息。

在本發(fā)明上述步驟s503提供的技術(shù)方案中,從消息隊列中移除第三消息。

在接收服務(wù)器發(fā)送的第三響應(yīng)消息之后,客戶端從消息隊列中移除第三消息,此時,該消息隊列中的第三消息之后的消息才可以發(fā)送。

該實施例通過在向服務(wù)器發(fā)送第一消息和第一序號之后、且在接收服務(wù)器發(fā)送的第一響應(yīng)消息之前,接收到插入到消息隊列中的第三消息,其中,第三消息的類型為第一類型;在從消息隊列中移除第一消息之后,向服務(wù)器發(fā)送第三消息和第三序號,其中,第三序號用于對第三消息進(jìn)行標(biāo)識,第三序號大于第一序號;接收服務(wù)器發(fā)送的第三響應(yīng)消息,其中,第三響應(yīng)消息用于表示服務(wù)器已對第三消息進(jìn)行處理,第三響應(yīng)消息攜帶有第三序號;從消息隊列中移除第三消息,由于通過給消息隊列中的消息添加唯一序號,接收到服務(wù)器發(fā)送的響應(yīng)消息中自帶對應(yīng)的序號,這樣客戶端在處理收到的響應(yīng)消息便能對其唯一標(biāo)識,確保了客戶端與服務(wù)器之間數(shù)據(jù)的同步,保證了客戶端與服務(wù)器之間數(shù)據(jù)的一致性,達(dá)到了提高消息處理效率的技術(shù)效果。

作為一種可選的實施方式,在向服務(wù)器發(fā)送第一消息和第一序號之后、且在接收服務(wù)器發(fā)送的第一響應(yīng)消息之前,接收到插入到消息隊列中的第四消息,其中,第四消息的類型為第一類型;在從消息隊列中移除第一消息之后,向服務(wù)器發(fā)送第四消息和第四序號,其中,第四序號用于對第四消息進(jìn)行標(biāo)識,第四序號等于第一序號;接收服務(wù)器發(fā)送的已經(jīng)緩存過的第一響應(yīng)消息;從消息隊列中移除第四消息。

圖6是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖6所示,該方法還包括以下步驟:

步驟s601,向服務(wù)器發(fā)送第四消息和第四序號。

在本發(fā)明上述步驟s601提供的技術(shù)方案中,向服務(wù)器發(fā)送第四消息和第四序號,其中,第四序號用于對第四消息進(jìn)行標(biāo)識,第四序號等于第一序號。

在向服務(wù)器發(fā)送第一消息和第一序號之后、且在接收服務(wù)器發(fā)送的第一響應(yīng)消息之前,接收到插入到消息隊列中的第四消息,該第二消息在消息隊列中位于第一消息之后。由于第一消息的類型為第一類型,也即,第一消息為阻塞消息,因而第四消息為被第一消息阻塞的消息。第四消息的類型為第一類型,也即,第四消息為阻塞消息。該第四消息可以為在客戶端執(zhí)行更新操作下的更新類消息,比如,用于購買物品、領(lǐng)取獎勵等消息。

在客戶端接收到第一響應(yīng)消息之后,客戶端從消息隊列中移除第一消息。在客戶端從消息隊列中移除第一消息之后,客戶端停止對第四消息的阻塞,向服務(wù)器發(fā)送上述第四消息和用于對第四消息進(jìn)行標(biāo)識的第四序號。

步驟s602,接收服務(wù)器發(fā)送的已經(jīng)緩存過的第一響應(yīng)消息。

在本發(fā)明上述步驟s602提供的技術(shù)方案中,接收服務(wù)器發(fā)送的已經(jīng)緩存過的第一響應(yīng)消息。

在服務(wù)器對第一消息進(jìn)行處理得到第一響應(yīng)消息之后,服務(wù)器可以對第一響應(yīng)消息和用于對第一消息進(jìn)行標(biāo)識的第一序號進(jìn)行緩存。在向服務(wù)器發(fā)送第四消息和第四序號之后,服務(wù)器接收第四消息和第四序號。由于第四序號與第一序號相同,則第四消息為在斷線重聯(lián)之后,重新向服務(wù)器發(fā)送的第一消息,服務(wù)器在確定第四消息為在斷線重聯(lián)之后,重新向服務(wù)器發(fā)送的第一消息之后,不對第四消息進(jìn)行處理,而是直接返回已經(jīng)緩存過的對第一消息進(jìn)行處理得到的第一消息。客戶端接收服務(wù)器發(fā)送的已經(jīng)緩存過的第一響應(yīng)消息,從而避免了對重發(fā)的消息進(jìn)行二次處理,提高了消息處理效率。

步驟s603,從消息隊列中移除第四消息。

在本發(fā)明上述步驟s603提供的技術(shù)方案中,從消息隊列中移除第四消息。

在接收服務(wù)器發(fā)送的第一響應(yīng)消息之后,客戶端從消息隊列中移除第四消息,此時,該消息隊列中的第四消息之后的消息才可以發(fā)送。

該實施例在向服務(wù)器發(fā)送第一消息和第一序號之后、且在接收服務(wù)器發(fā)送的第一響應(yīng)消息之前,接收到插入到消息隊列中的第四消息,第四消息的類型為第一類型;在從消息隊列中移除第一消息之后,向服務(wù)器發(fā)送第四消息和第四序號,第四序號用于對第四消息進(jìn)行標(biāo)識,第四序號等于第一序號;接收服務(wù)器發(fā)送的已經(jīng)緩存過的第一響應(yīng)消息;從消息隊列中移除第四消息,從而提高了消息處理的效率。

可選地,當(dāng)客戶端向服務(wù)器發(fā)送的消息的序號小于服務(wù)器緩存的消息的序號,則該消息為過期消息,服務(wù)器直接丟棄不做處理。

作為一種可選的實施方式,在向服務(wù)器發(fā)送第一消息和第一序號之后,判斷在向服務(wù)器發(fā)送第一消息和第一序號之后,未接收到第一響應(yīng)消息的等待時間是否超過第一預(yù)設(shè)時間;在等待時間超過第一預(yù)設(shè)時間的情況下,顯示第一提示消息,第一提示消息用于提示繼續(xù)等待接收第一響應(yīng)消息;當(dāng)接收到第一響應(yīng)消息時,關(guān)閉第一提示消息。

圖7是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖7所示,該方法還包括以下步驟:

步驟s701,判斷在向服務(wù)器發(fā)送第一消息和第一序號之后,未接收到第一響應(yīng)消息的等待時間是否超過第一預(yù)設(shè)時間。

在本發(fā)明上述步驟s701提供的技術(shù)方案中,判斷在向服務(wù)器發(fā)送第一消息和第一序號之后,未接收到第一響應(yīng)消息的等待時間是否超過第一預(yù)設(shè)時間。

在網(wǎng)絡(luò)環(huán)境不穩(wěn)定的情況下,會出現(xiàn)由于網(wǎng)絡(luò)延遲導(dǎo)致第一響應(yīng)消息長時間未返回客戶端。為了在弱網(wǎng)環(huán)境下提高用戶體驗,需要基于當(dāng)前網(wǎng)絡(luò)問題的嚴(yán)重程度給到用戶不同的提示反饋,在向服務(wù)器發(fā)送第一消息和第一序號之后,判斷在向服務(wù)器發(fā)送第一消息和第一序號之后,未接收到第一響應(yīng)消息的等待時間是否超過第一預(yù)設(shè)時間。如果判斷出等待時間超過第一預(yù)設(shè)時間,則執(zhí)行步驟s702。

步驟s702,顯示第一提示消息。

在本發(fā)明上述步驟s702提供的技術(shù)方案中,如果判斷出等待時間超過第一預(yù)設(shè)時間,顯示第一提示消息,其中,第一提示消息用于提示繼續(xù)等待接收第一響應(yīng)消息。

在判斷等待時間是否超過第一預(yù)設(shè)時間之后,如果判斷出等待時間超過第一預(yù)設(shè)時間,顯示第一提示消息,該第一提示消息為客戶端的輕度提示,比如,顯示“正在連接中……”的提示消息,用于提示用戶繼續(xù)等待接收第一響應(yīng)消息。

步驟s703,當(dāng)接收到第一響應(yīng)消息時,關(guān)閉第一提示消息。

在本發(fā)明上述步驟s703提供的技術(shù)方案中,當(dāng)接收到第一響應(yīng)消息時,關(guān)閉第一提示消息。

在顯示第一提示消息之后,當(dāng)接收到第一響應(yīng)消息時,也即,在第一預(yù)設(shè)時間內(nèi)接收到第一響應(yīng)消息,關(guān)閉第一提示消息,以盡可能地縮短用戶的等待時間。

可選地,第一響應(yīng)消息在超過第一預(yù)設(shè)時間未返回客戶端可能是因為客戶端向服務(wù)器發(fā)送第一消息的過程中產(chǎn)生丟包情況,或者服務(wù)器在向客戶端返回第一響應(yīng)消息的過程中產(chǎn)生丟包情況,該實施例將這種情況視為常態(tài)。

該實施例在向服務(wù)器發(fā)送第一消息和第一序號之后,判斷在向服務(wù)器發(fā)送第一消息和第一序號之后,未接收到第一響應(yīng)消息的等待時間是否超過第一預(yù)設(shè)時間;如果判斷出等待時間超過第一預(yù)設(shè)時間,顯示第一提示消息,其中,第一提示消息用于提示繼續(xù)等待接收第一響應(yīng)消息;當(dāng)接收到第一響應(yīng)消息時,關(guān)閉第一提示消息,從而根據(jù)網(wǎng)絡(luò)的真實情況,盡可能地縮短用戶的等待時間,提高數(shù)據(jù)處理效率。

作為一種可選的實施方式,在步驟s204,向服務(wù)器發(fā)送第一消息和第一序號之后,在與服務(wù)器斷開連接的情況下,自動發(fā)送與服務(wù)器重新建立連接的第一請求;顯示用于提示與服務(wù)器重新建立連接的第二提示消息。

圖8是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖8所示,該方法還包括以下步驟:

步驟s801,在與服務(wù)器斷開連接的情況下,自動發(fā)送與服務(wù)器重新建立連接的第一請求。

在本發(fā)明上述步驟s801提供的技術(shù)方案中,在與服務(wù)器斷開連接的情況下,自動發(fā)送與服務(wù)器重新建立連接的第一請求。

在向服務(wù)器發(fā)送第一消息和第一序號之后,在客戶端與服務(wù)器斷開連接的情況下,客戶端內(nèi)部會嘗試斷線重連,自動發(fā)送與服務(wù)器重新建立連接的第一請求,也即,客戶端進(jìn)行自動修復(fù)。由于移動環(huán)境的不穩(wěn)定性,網(wǎng)絡(luò)在3g/4g和wifi來回切換是很常見的情況,因此該實施例將這種情況視為常態(tài)。

步驟s802,顯示第二提示信息。

在本發(fā)明上述步驟s802提供的技術(shù)方案中,顯示第二提示信息,其中,第二提示信息用于提示與服務(wù)器重新建立連接中。

在客戶端自動發(fā)送與服務(wù)器重新建立連接的第一請求之后,客戶端顯示第二提示消息,該第二提示消息為客戶端上的輕度提示,用于提示與服務(wù)器重新建立連接中,比如,在客戶端上顯示“重新建立連接中”。

該實施例在向服務(wù)器發(fā)送第一消息和第一序號之后,在與服務(wù)器斷開連接的情況下,自動發(fā)送與服務(wù)器重新建立連接的第一請求;顯示第二提示信息,其中,第二提示信息用于提示與服務(wù)器重新建立連接中,以盡可能地縮短用戶的等待時間,提高了消息的處理效率。

作為一種可選的實施方式,在步驟s204,向服務(wù)器發(fā)送第一消息和第一序號之后,在與服務(wù)器斷開連接的情況下,獲取自動與服務(wù)器重新建立連接的連接次數(shù);在連接次數(shù)大于預(yù)設(shè)連接次數(shù)的情況下,顯示第三提示信息,該第三提示信息用于提示與服務(wù)器無法建立連接。

圖9是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖9所示,該方法還包括以下步驟:

步驟s901,在與服務(wù)器斷開連接的情況下,獲取自動與服務(wù)器重新建立連接的連接次數(shù)。

在本發(fā)明上述步驟s901提供的技術(shù)方案中,在與服務(wù)器斷開連接的情況下,獲取自動與服務(wù)器重新建立連接的連接次數(shù)。

客戶端與服務(wù)器開始建立連接。在與服務(wù)器斷開連接的情況下,自動發(fā)送與服務(wù)器重新建立連接的第一請求,請求與服務(wù)器建立連接,也即,客戶端與服務(wù)器自動重連,獲取自動與服務(wù)器重新建立連接的連接次數(shù)。

步驟s902,判斷連接次數(shù)是否大于預(yù)設(shè)連接次數(shù)。

在本發(fā)明上述步驟s902提供的技術(shù)方案中,判斷連接次數(shù)是否大于預(yù)設(shè)連接次數(shù)。

在獲取自動與服務(wù)器重新建立連接的連接次數(shù)之后,判斷連接次數(shù)是否大于預(yù)設(shè)連接次數(shù)之后,判斷連接次數(shù)是否大于預(yù)設(shè)連接次數(shù),該預(yù)設(shè)連接次數(shù)為允許客戶端自動與服務(wù)器建立連接的最大重連次數(shù)。如果判斷出連接次數(shù)大于預(yù)設(shè)連接次數(shù),則執(zhí)行步驟s903。如果判斷出連接次數(shù)不大于預(yù)設(shè)連接次數(shù),則自動與服務(wù)器重新建立連接。

步驟s903,顯示第三提示信息。

在本發(fā)明上述步驟s903提供的技術(shù)方案中,如果判斷出連接次數(shù)大于預(yù)設(shè)連接次數(shù),顯示第三提示信息,其中,第三提示信息用于提示與服務(wù)器無法建立連接。

在判斷出連接次數(shù)是否大于預(yù)設(shè)連接次數(shù)之后,如果判斷出連接次數(shù)大于預(yù)設(shè)連接次數(shù)之后,則此時的網(wǎng)絡(luò)已經(jīng)無法完成自動修復(fù),這時顯示第三提示消息,該第三提示消息為客戶端上的重度提示,用于提示客戶端與服務(wù)器無法建立連接,比如,在客戶端上顯示錯誤提示框“網(wǎng)絡(luò)異常,是否繼續(xù)嘗試連接”,詢問用戶是否重新與服務(wù)器建立連接,還是重新登錄客戶端。如果用戶對網(wǎng)絡(luò)進(jìn)行了手動修復(fù),比如,選擇了重新與服務(wù)器建立連接,可以避免退出到客戶端的登錄界面,再重新輸入帳號進(jìn)行登錄的繁瑣步驟。

該實施例通過在向服務(wù)器發(fā)送第一消息和第一序號之后,在與服務(wù)器斷開連接的情況下,獲取自動與服務(wù)器重新建立連接的連接次數(shù);判斷連接次數(shù)是否大于預(yù)設(shè)連接次數(shù);如果判斷出連接次數(shù)大于預(yù)設(shè)連接次數(shù),顯示第三提示信息,其中,第三提示信息用于提示與服務(wù)器無法建立連接,從而明確網(wǎng)絡(luò)的真實情況,給用戶精確的反饋,提升用戶體驗,也避免了不必要的重連、重新登錄而導(dǎo)致的流量浪費(fèi)的情況發(fā)生。

作為一種可選的實施方式,在顯示第三提示信息之后,接收第一操作信息,其中,第一操作信息用于觸發(fā)重新與服務(wù)器建立連接;或者接收第二操作信息,其中,第二操作信息用于指示通過重新登錄與服務(wù)器建立連接。

在顯示第三提示信息之后,客戶端接收第一操作信息,該第一操作信息可以對網(wǎng)絡(luò)進(jìn)行手動修復(fù)的操作信息,比如,在顯示第三提示信息的界面接收用于重新與服務(wù)器建立連接的第一操作信息,從而觸發(fā)客戶端與服務(wù)器重新建立連接,可以避免退出到客戶端的登錄界面,再重新輸入帳號進(jìn)行登錄的繁瑣步驟。

在顯示第三提示信息之后,客戶端接收第二操作信息,該第二操作信息可以用于指示通過重新登錄與服務(wù)器建立連接,從而只有在用戶手動選擇重新登錄時才會進(jìn)行重新登錄的操作,大大降低了由于重登錄進(jìn)行全量數(shù)據(jù)拉取而導(dǎo)致的流量耗費(fèi)問題,提升了在網(wǎng)絡(luò)環(huán)境不穩(wěn)定的情況下的用戶體驗。

作為一種可選的實施方式,在向服務(wù)器發(fā)送第一消息和第一序號之前,從應(yīng)用層連接的初始狀態(tài)進(jìn)入連接狀態(tài);在與服務(wù)器建立連接失敗的情況下,進(jìn)入等待狀態(tài);在與服務(wù)器成功建立連接的情況下,進(jìn)入運(yùn)行狀態(tài)。

圖10是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖10所示,該方法還包括以下步驟:

步驟s1001,從應(yīng)用層連接的初始狀態(tài)進(jìn)入連接狀態(tài)。

在本發(fā)明上述步驟s1001提供的技術(shù)方案中,從應(yīng)用層連接的初始狀態(tài)進(jìn)入連接狀態(tài),其中,連接狀態(tài)為在與服務(wù)器建立連接的狀態(tài)。

該實施例基于連接狀態(tài)機(jī)的狀態(tài)管理,狀態(tài)機(jī)用于描述對象內(nèi)部狀態(tài)行為和狀態(tài)間轉(zhuǎn)移的模型??蛻舳藢釉趥鬏斂刂茀f(xié)議(transmissioncontrol,簡稱為tcp)的鏈接基礎(chǔ)上,封裝了一個應(yīng)用層連接connector,每個connector對應(yīng)于一個域,比如,在游戲登錄場景、游戲大廳場景、游戲戰(zhàn)斗場景分別對應(yīng)一個自己的connector。其中,tcp是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。需要說明的是,該實施例的connector的生命周期是無視底層tcp是否連接的,即使底層斷開又建立條新的連接,該connector也始終不變,每個connector具有一個連接狀態(tài)機(jī)。該狀態(tài)機(jī)的狀態(tài)包括初始狀態(tài)(start)、連接狀態(tài)(connecting)、運(yùn)行狀態(tài)(running)、等待狀態(tài)(waiting)狀態(tài)和失敗狀態(tài)(fail)。

在向服務(wù)器發(fā)送第一消息和第一序號之前,從應(yīng)用層連接的初始狀態(tài)進(jìn)入連接狀態(tài),初始狀態(tài)是connector初始化時的狀態(tài)。當(dāng)客戶端第一次進(jìn)行連接時,會調(diào)用底層tcp連接,并進(jìn)入connecting狀態(tài),該狀態(tài)不影響界面顯示。連接狀態(tài)用于表示著一次連接中或者重新連接中,取決于它的源狀態(tài)是初始狀態(tài)還是其它狀態(tài)。該狀態(tài)的作用是枚進(jìn)入一次,會增加其重連次數(shù),用于后續(xù)狀態(tài)判斷是否達(dá)到最大的自動重連次數(shù)。當(dāng)與服務(wù)器連接失敗或者重連失敗時,執(zhí)行步驟s1002。當(dāng)與服務(wù)器連接成功時,執(zhí)行步驟s1003。

步驟s1002,在與服務(wù)器建立連接失敗的情況下,進(jìn)入等待狀態(tài)。

在本發(fā)明上述步驟s1002提供的技術(shù)方案中,在與服務(wù)器建立連接失敗的情況下,進(jìn)入等待狀態(tài),其中,等待狀態(tài)為用于指示網(wǎng)絡(luò)出現(xiàn)異常的狀態(tài)。

在從應(yīng)用層連接的初始狀態(tài)進(jìn)入連接狀態(tài)之后,在與服務(wù)器建立連接失敗的情況下,進(jìn)入等待狀態(tài),該等待狀態(tài)用于標(biāo)識當(dāng)前網(wǎng)絡(luò)出現(xiàn)異常,并且將根據(jù)重連計數(shù)、連接結(jié)果等因素來判斷是否該嘗試下一次重連,如果嘗試進(jìn)行下一次重連,則進(jìn)入連接狀態(tài),如果已經(jīng)徹底無發(fā)與服務(wù)器建立連接了,或者已經(jīng)達(dá)到與服務(wù)器進(jìn)行連接的最大次數(shù),則進(jìn)入失敗狀態(tài)。

步驟s1003,在與服務(wù)器成功建立連接的情況下,進(jìn)入運(yùn)行狀態(tài)。

在本發(fā)明上述步驟s1003提供的技術(shù)方案中,在與服務(wù)器成功建立連接的情況下,進(jìn)入運(yùn)行狀態(tài),其中,運(yùn)行狀態(tài)用于指示與服務(wù)器成功建立連接之后的狀態(tài)。

在從應(yīng)用層連接的初始狀態(tài)進(jìn)入連接狀態(tài)之后,在與服務(wù)器成功建立連接的情況下,進(jìn)入運(yùn)行狀態(tài),該運(yùn)行狀態(tài)用于表示與服務(wù)器連接成功之后的狀態(tài)。在該運(yùn)行狀態(tài)下,客戶端與服務(wù)器將進(jìn)行正常通信。當(dāng)與服務(wù)器連接超時或者與服務(wù)器連接斷開的情況下,進(jìn)入等待狀態(tài)。

該在向服務(wù)器發(fā)送第一消息和第一序號之前,從應(yīng)用層連接的初始狀態(tài)進(jìn)入連接狀態(tài),其中,連接狀態(tài)為在與服務(wù)器建立連接的狀態(tài);在與服務(wù)器建立連接失敗的情況下,進(jìn)入等待狀態(tài),其中,等待狀態(tài)為用于指示網(wǎng)絡(luò)出現(xiàn)異常的狀態(tài);在與服務(wù)器成功建立連接的情況下,進(jìn)入運(yùn)行狀態(tài),其中,運(yùn)行狀態(tài)用于指示與服務(wù)器成功建立連接之后的狀態(tài),

作為一種可選的實施方式,在進(jìn)入等待狀態(tài)之后,在與服務(wù)器重新建立連接的連接次數(shù)超過預(yù)設(shè)次數(shù)的情況下,進(jìn)入連接狀態(tài);在連接次數(shù)超過預(yù)設(shè)次數(shù)的情況下,進(jìn)入失敗狀態(tài)。

圖11是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖11所示,該方法還包括以下步驟:

步驟s1101,判斷與服務(wù)器重新建立連接的連接次數(shù)是否超過預(yù)設(shè)次數(shù)。

在本發(fā)明上述步驟s1101提供的技術(shù)方案中,判斷與服務(wù)器重新建立連接的連接次數(shù)是否超過預(yù)設(shè)次數(shù)。

等待狀態(tài)用于表示當(dāng)前網(wǎng)絡(luò)出現(xiàn)異常。在進(jìn)入等待狀態(tài)之后,判斷與服務(wù)器重新建立連接的連接次數(shù)是否超過預(yù)設(shè)次數(shù),該預(yù)設(shè)次數(shù)為允許客戶端與服務(wù)器建立連接的最大次數(shù)。如果判斷出與服務(wù)器重新建立連接的連接次數(shù)未超過預(yù)設(shè)次數(shù),執(zhí)行步驟s1102;如果判斷出與服務(wù)器重新建立連接的連接次數(shù)超過預(yù)設(shè)次數(shù),執(zhí)行步驟s1103。

步驟s1102,進(jìn)入連接狀態(tài)。

在本發(fā)明上述步驟s1102提供的技術(shù)方案中,如果判斷出連接次數(shù)未超過預(yù)設(shè)次數(shù),進(jìn)入連接狀態(tài)。

在判斷與服務(wù)器重新建立連接的連接次數(shù)是否超過預(yù)設(shè)次數(shù)之后,如果判斷出連接次數(shù)未超過預(yù)設(shè)次數(shù),也即,可以嘗試進(jìn)行下一次與服務(wù)器建立連接,進(jìn)入連接狀態(tài)。

步驟s1103,進(jìn)入失敗狀態(tài)。

在本發(fā)明上述步驟s1103提供的技術(shù)方案中,如果判斷出連接次數(shù)超過預(yù)設(shè)次數(shù),進(jìn)入失敗狀態(tài),其中,失敗狀態(tài)為用于指示無法與服務(wù)器建立連接的狀態(tài)。

在判斷與服務(wù)器重新建立連接的連接次數(shù)是否超過預(yù)設(shè)次數(shù)之后,如果判斷出連接次數(shù)超過預(yù)設(shè)次數(shù),則表明當(dāng)前網(wǎng)絡(luò)已經(jīng)徹底無法連接了,進(jìn)入失敗狀態(tài),該失敗狀態(tài)表明網(wǎng)絡(luò)條件已經(jīng)很差,并且無法在設(shè)置的最大重連次數(shù)下重連成功。一般的游戲在這種情況下無法正常進(jìn)行,需要用戶手動修復(fù)網(wǎng)絡(luò)。在修復(fù)網(wǎng)絡(luò)指示,可以選擇強(qiáng)制斷開之前的連接并建立新連接,從而回到狀態(tài)機(jī)的初始狀態(tài)。

該實施例在進(jìn)入等待狀態(tài)之后,判斷與服務(wù)器重新建立連接的連接次數(shù)是否超過預(yù)設(shè)次數(shù);如果判斷出連接次數(shù)未超過預(yù)設(shè)次數(shù),進(jìn)入連接狀態(tài);如果判斷出連接次數(shù)超過預(yù)設(shè)次數(shù),進(jìn)入失敗狀態(tài),其中,失敗狀態(tài)為用于指示無法與服務(wù)器建立連接的狀態(tài),實現(xiàn)了對網(wǎng)絡(luò)狀態(tài)的細(xì)分,以及狀態(tài)間轉(zhuǎn)移關(guān)系來給游戲玩家更精確的反饋,進(jìn)而滿足日益增進(jìn)的用戶需求。

作為一種可選的實施方式,在進(jìn)入連接狀態(tài)或進(jìn)入等待狀態(tài)時,顯示第二提示信息,其中,第二提示信息用于提示與服務(wù)器重新建立連接中;在進(jìn)入失敗狀態(tài)時,顯示第三提示信息,其中,第三提示信息用于提示與服務(wù)器無法建立連接。

該實施例的客戶端可以選擇在不同狀態(tài)下對用戶進(jìn)行不同程度的提示。比如,在連接狀態(tài)下、等待狀態(tài)下,采用用于提示與服務(wù)器重新建立連接的輕度提示,讓用戶稍作等待,這個過程中系統(tǒng)進(jìn)行自動重連,待重連成功后關(guān)閉提示。而對于自動重連失敗的失敗狀態(tài),可以顯示出錯誤彈框,來告知用戶不宜再進(jìn)行自動重連,可以嘗試手動修復(fù)網(wǎng)絡(luò),待修復(fù)后可以手動選擇重連,從而給予用戶更精確的狀態(tài)反饋,提升了客戶端在弱網(wǎng)環(huán)境下的用戶體驗,并且節(jié)省流量。

根據(jù)本發(fā)明實施例,還提供了一種消息處理方法的實施例。

可選地,在本實施例中,上述消息處理方法可以應(yīng)用于如圖1所示的由服務(wù)器102和終端104所構(gòu)成的硬件環(huán)境中。如圖1所示,服務(wù)器102通過網(wǎng)絡(luò)與終端104進(jìn)行連接,上述網(wǎng)絡(luò)包括但不限于:廣域網(wǎng)、城域網(wǎng)或局域網(wǎng),終端104并不限定于pc、手機(jī)、平板電腦等。本發(fā)明實施例的消息處理方法可以由服務(wù)器102來執(zhí)行,也可以由終端104來執(zhí)行,還可以是由服務(wù)器102和終端104共同執(zhí)行。其中,終端104執(zhí)行本發(fā)明實施例的消息處理方法也可以是由安裝在其上的客戶端來執(zhí)行。

圖12是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖12所示,該方法還包括以下步驟:

步驟s1202,接收消息隊列中的第一消息和第一序號。

在本發(fā)明上述步驟s1202提供的技術(shù)方案中,接收消息隊列中的第一消息和第一序號,其中,消息隊列中存儲多條待發(fā)送消息,第一消息的類型為第一類型,第一序號用于對第一消息進(jìn)行標(biāo)識。

該實施例的消息隊列用于存儲客戶端向服務(wù)器待發(fā)的多條消息。在預(yù)設(shè)網(wǎng)絡(luò)環(huán)境下,服務(wù)器接收消息隊列中的第一消息和第一序號,該第一消息為插入消息隊列中的消息。該預(yù)設(shè)網(wǎng)絡(luò)環(huán)境可以為網(wǎng)絡(luò)環(huán)境不穩(wěn)定的網(wǎng)絡(luò)環(huán)境,比如,在2g/3g/4g網(wǎng)絡(luò)、wifi的頻繁切換的網(wǎng)絡(luò)環(huán)境下,可以為移動網(wǎng)絡(luò)的延遲和波動的網(wǎng)絡(luò)環(huán)境。

消息具有不同的類型,服務(wù)器接收第一類型的第一消息,該第一類型的消息在向客戶端發(fā)送時會阻塞消息隊列中位于該第一消息之后的消息,也即,在服務(wù)器對第一消息進(jìn)行響應(yīng),并將響應(yīng)消息發(fā)送至客戶端之前,暫停發(fā)送在消息隊列中的第一消息之后的消息,直到在客戶端接收到服務(wù)器對第一消息進(jìn)行響應(yīng)的響應(yīng)消息之后,才可以發(fā)送消息隊列中的第一消息之后的消息,該第一類型的第一消息為阻塞消息。

第一消息的第一序號用于對第一消息進(jìn)行標(biāo)識,從而將第一消息與消息隊列中的其它消息區(qū)分開??蛇x地,服務(wù)器接收客戶端發(fā)送的用于請求服務(wù)器對第一消息進(jìn)行處理的請求,該請求攜帶有第一消息和第一序號。服務(wù)器對該請求進(jìn)行響應(yīng)。

步驟s1204,對第一消息進(jìn)行處理,得到第一響應(yīng)消息。

在本發(fā)明上述步驟s1204提供的技術(shù)方案中,對第一消息進(jìn)行處理,得到第一響應(yīng)消息,其中,第一響應(yīng)消息攜帶有第一序號。

在服務(wù)器接收消息隊列中的第一消息和第一序號之后,服務(wù)器對第一消息進(jìn)行處理,得到第一響應(yīng)消息??蛇x地,服務(wù)器在接收到第一消息和第一序號之后,判斷有沒有緩存過第一序號,如果服務(wù)器沒有緩存過第一序號,則該第一消息是第一次向服務(wù)器發(fā)送的消息,服務(wù)器對第一消息進(jìn)行處理,得到第一響應(yīng)消息;如果判斷出服務(wù)器緩存過第一序號,則該第一消息為在斷線重連之后,服務(wù)器重新接收到的消息,則服務(wù)器直接向客戶端發(fā)送之前已經(jīng)對第一消息進(jìn)行處理得到的第一響應(yīng)消息。

可選地,服務(wù)器在接收到對攜帶有第一消息和第一序號的請求之后,對該請求進(jìn)行響應(yīng),得到第一響應(yīng)消息,該第一響應(yīng)消息也即為服務(wù)器對第一消息進(jìn)行處理得到的回包消息。

上述響應(yīng)消息用于表示服務(wù)器已經(jīng)對第一消息進(jìn)行處理,并且攜帶有第一序號,也即,第一響應(yīng)消息通過第一序號進(jìn)行唯一標(biāo)識。服務(wù)器在對第一消息進(jìn)行處理得到第一響應(yīng)消息之后,可以對第一響應(yīng)消息和第一序號進(jìn)行緩存,也可以通過與后續(xù)發(fā)送的消息對應(yīng)的響應(yīng)消息和對應(yīng)的序號進(jìn)行更新。

步驟s1206,向客戶端發(fā)送第一響應(yīng)消息。

在本發(fā)明上述步驟s1206提供的技術(shù)方案中,向客戶端發(fā)送第一響應(yīng)消息,其中,在客戶端接收到第一響應(yīng)消息之后,第一消息移除了消息隊列。

在對第一消息進(jìn)行處理,得到第一響應(yīng)消息之后,服務(wù)器向客戶端發(fā)送第一響應(yīng)消息,在客戶端接收到第一響應(yīng)消息之后,第一消息移除了消息隊列。由于該第一響應(yīng)消息也攜帶用于標(biāo)識第一消息的第一序號,因而客戶端可以唯一確認(rèn)第一響應(yīng)消息為服務(wù)器對第一消息進(jìn)行處理得到的響應(yīng)消息,從而確保了客戶端和服務(wù)器之間發(fā)送與接收的數(shù)據(jù)的一致性,避免了由于網(wǎng)絡(luò)環(huán)境不穩(wěn)定而導(dǎo)致的客戶端與服務(wù)器間的數(shù)據(jù)不一致,進(jìn)而有利于客戶端與服務(wù)器之間進(jìn)行正常的數(shù)據(jù)通信。

通過上述步驟s1202至步驟s1206,在本發(fā)明實施例中,接收消息隊列中的第一消息和第一序號,其中,消息隊列中存儲多條待發(fā)送消息,第一消息的類型為第一類型,第一序號用于對第一消息進(jìn)行標(biāo)識;對第一消息進(jìn)行處理,得到第一響應(yīng)消息,其中,第一響應(yīng)消息攜帶有第一序號;向客戶端發(fā)送第一響應(yīng)消息,其中,在客戶端接收到第一響應(yīng)消息之后,第一消息移除了消息隊列,由于通過給消息隊列中的消息添加唯一序號,接收到服務(wù)器發(fā)送的響應(yīng)消息中自帶對應(yīng)的序號,這樣客戶端在處理收到的響應(yīng)消息便能對其唯一標(biāo)識,從而保證客戶端與服務(wù)器之間數(shù)據(jù)的一致性,達(dá)到了提高消息處理效率的技術(shù)效果,進(jìn)而解決了相關(guān)技術(shù)中對消息處理的效率低下的技術(shù)問題。

作為一種可選的實施方式,在發(fā)送第一響應(yīng)消息之后,接收到插入到消息隊列中的第二消息和第二序號,其中,第二消息的類型為第二類型,第二序號用于對第二消息進(jìn)行標(biāo)識;對第二消息進(jìn)行處理,得到第二響應(yīng)消息,第二響應(yīng)消息攜帶有第二序號;發(fā)送第二響應(yīng)消息。

圖13是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖13所示,該方法還包括以下步驟:

步驟s1301,接收到插入到消息隊列中的第二消息和第二序號。

在本發(fā)明上述步驟s1301提供的技術(shù)方案中,接收到插入到消息隊列中的第二消息和第二序號,其中,第二消息的類型為第二類型,第二序號用于對第二消息進(jìn)行標(biāo)識。

消息隊列中存儲的消息可以不斷地插入消息。在服務(wù)器發(fā)送第一響應(yīng)消息之后,接收到插入到消息隊列中的第二消息和第二序號。該第二消息在消息隊列中位于第一消息之后。由于第一消息的類型為第一類型,也即,第一消息為阻塞消息,因而第二消息為被第一消息在消息隊列中阻塞的消息。第二消息的類型與第一消息的類型不同,可以為消息的普通類型。該第二消息可以為在客戶端執(zhí)行查詢操作下的查詢類消息,比如,用于拉取玩家等級的消息。

第二消息的類型為消息的普通類型,可以通過預(yù)設(shè)序號進(jìn)行標(biāo)識。第二消息通過第二序號進(jìn)行標(biāo)識,第二序號為上述預(yù)設(shè)序號,比如,第二序號為0。

在客戶端從消息隊列中移除第一消息之后,服務(wù)器接收客戶端發(fā)送的第二消息和第二序號。可選地,服務(wù)器接收客戶端發(fā)送的用于請求服務(wù)器對第二消息進(jìn)行處理的請求,該請求攜帶有第二消息和第二序號。

步驟s1302,對第二消息進(jìn)行處理,得到第二響應(yīng)消息。

在本發(fā)明上述步驟s1302提供的技術(shù)方案中,對第二消息進(jìn)行處理,得到第二響應(yīng)消息,其中,第二響應(yīng)消息攜帶有第二序號。

在服務(wù)器接收到插入到消息隊列中的第二消息和第二序號之后,服務(wù)器對第二消息進(jìn)行處理,得到第二響應(yīng)消息??蛇x地,服務(wù)器在接收到對攜帶有第二消息和第二序號的請求之后,對該請求進(jìn)行響應(yīng),得到第二響應(yīng)消息,該第二響應(yīng)消息也即為服務(wù)器對第二消息進(jìn)行處理得到的回包消息,服務(wù)器直接對第二消息進(jìn)行處理并返回。上述第二響應(yīng)消息用于表示服務(wù)器已經(jīng)對第二消息進(jìn)行處理,并且攜帶有第二序號,也即,第二響應(yīng)消息通過第二序號進(jìn)行唯一標(biāo)識。

步驟s1303,發(fā)送第二響應(yīng)消息。

在本發(fā)明上述步驟s1303提供的技術(shù)方案中,發(fā)送第二響應(yīng)消息。

在服務(wù)器對第二消息進(jìn)行處理,得到第二響應(yīng)消息之后,服務(wù)器發(fā)送第二響應(yīng)消息。由于第二響應(yīng)消息也攜帶用于標(biāo)識第二消息的第二序號,因而客戶端可以唯一確認(rèn)第二響應(yīng)消息為服務(wù)器對第二消息進(jìn)行處理得到的響應(yīng)消息,從而確保了客戶端和服務(wù)器之間發(fā)送與接收的數(shù)據(jù)的一致性,進(jìn)而有利于客戶端與服務(wù)器之間進(jìn)行正常的數(shù)據(jù)通信。

該實施例在發(fā)送第一響應(yīng)消息之后,接收到插入到消息隊列中的第二消息和第二序號,其中,第二消息的類型為第二類型,第二序號用于對第二消息進(jìn)行標(biāo)識;對第二消息進(jìn)行處理,得到第二響應(yīng)消息,其中,第二響應(yīng)消息攜帶有第二序號;發(fā)送第二響應(yīng)消息,由于通過給消息隊列中的消息添加唯一序號,接收到服務(wù)器發(fā)送的響應(yīng)消息中自帶對應(yīng)的序號,這樣客戶端在處理收到的響應(yīng)消息便能對其唯一標(biāo)識,從而保證了客戶端與服務(wù)器之間數(shù)據(jù)的一致性,達(dá)到了提高消息處理效率的技術(shù)效果。

作為一種可選的實施方式,在發(fā)送第一響應(yīng)消息之后,方法還包括:緩存第一序號和第一響應(yīng)消息。

在發(fā)送第一響應(yīng)消息之后,服務(wù)器緩存第一序號和第一響應(yīng)消息,當(dāng)下一次重新接收到第一消息時,可以直接返回緩存的第一響應(yīng)消息,從而避免了對重現(xiàn)發(fā)送的消息進(jìn)行二次處理,提高了消息處理效率。

作為一種可選的實施方式,在發(fā)送第一響應(yīng)消息之后,接收到插入到消息隊列中的第三消息和第三序號,其中,第三消息的類型為第一類型,第三序號用于對第三消息進(jìn)行標(biāo)識;在第三序號大于第一序號的情況下,對第三消息進(jìn)行處理,得到第三響應(yīng)消息,其中,第三響應(yīng)消息攜帶有第三序號;發(fā)送第三響應(yīng)消息。

圖14是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖14所示,該方法還包括以下步驟:

步驟s1401,接收到插入到消息隊列中的第三消息和第三序號。

在本發(fā)明上述步驟s1401提供的技術(shù)方案中,接收到插入到消息隊列中的第三消息和第三序號,其中,第三消息的類型為第一類型,第三序號用于對第三消息進(jìn)行標(biāo)識。

消息隊列中存儲的消息可以不斷地插入消息。在發(fā)送第一響應(yīng)消息之后,接收到插入到消息隊列中的第三消息和第三序號,該第三消息在消息隊列中位于第一消息之后,也即,為被第一消息阻塞的消息。第三消息的類型與第一消息的類型相同,為阻塞消息類型。

在客戶端接收到第一響應(yīng)消息之后,客戶端從消息隊列中移除第一消息。在客戶端從消息隊列中移除第一消息之后,客戶端停止對消息隊列中的第三消息進(jìn)行阻塞,服務(wù)器接收客戶端發(fā)送的上述第三消息和用于對第三消息進(jìn)行標(biāo)識的第三序號。

步驟s1402,判斷第三序號是否大于第一序號。

在本發(fā)明上述步驟s1402提供的技術(shù)方案中,判斷第三序號是否大于第一序號。

在服務(wù)器接收到插入到消息隊列中的第三消息和第三序號之后,服務(wù)器判斷第三序號是否大于第一序號,如果判斷出第三序號大于第一序號,執(zhí)行步驟s1403。

步驟s1403,對第三消息進(jìn)行處理,得到第三響應(yīng)消息。

在本發(fā)明上述步驟s1403提供的技術(shù)方案中,如果出判斷第三序號大于第一序號,對第三消息進(jìn)行處理,得到第三響應(yīng)消息,其中,第三響應(yīng)消息攜帶有第三序號。

在服務(wù)器判斷第三序號是否大于第一序號之后,如果出判斷第三序號大于第一序號,則第三消息為新的阻塞消息,服務(wù)器對第三消息進(jìn)行處理,得到第三響應(yīng)消息??蛇x地,服務(wù)器接收客戶端發(fā)送的用于請求服務(wù)器對第三消息進(jìn)行處理的請求,該請求攜帶有第三消息和第三序號。

步驟s1404,發(fā)送第三響應(yīng)消息。

在本發(fā)明上述步驟s1404提供的技術(shù)方案中,發(fā)送第三響應(yīng)消息。

在服務(wù)器對第三消息進(jìn)行處理,得到第三響應(yīng)消息之后,服務(wù)器向客戶端發(fā)送第三響應(yīng)消息。

該實施例通過在發(fā)送第一響應(yīng)消息之后,接收到插入到消息隊列中的第三消息和第三序號,其中,第三消息的類型為第一類型,第三序號用于對第三消息進(jìn)行標(biāo)識;判斷第三序號是否大于第一序號;如果出判斷第三序號大于第一序號,對第三消息進(jìn)行處理,得到第三響應(yīng)消息,其中,第三響應(yīng)消息攜帶有第三序號;發(fā)送第三響應(yīng)消息,達(dá)到了提高消息處理效率的技術(shù)效果。

作為一種可選的實施方式,在發(fā)送第三響應(yīng)消息之后,緩存第三序號和第三響應(yīng)消息。

在服務(wù)器發(fā)送第三響應(yīng)消息之后,服務(wù)器將原先緩存的第一序號更新為第三序號,將原先緩存的第一響應(yīng)消息更新第三響應(yīng)消息,從而實現(xiàn)對第三序號和第三響應(yīng)消息的緩存。

作為一種可選的實施方式,在判斷第三序號是否大于第一序號之后,如果判斷出第三序號等于第一序號,發(fā)送第一響應(yīng)消息。

在判斷第三序號是否大于第一序號之后,如果判斷出第三序號等于第一序號,則該第三消息是斷線重連后重發(fā)的消息,那么服務(wù)器不對它進(jìn)行二次處理,而是直接返回緩存的第一響應(yīng)消息,提高了數(shù)據(jù)處理效率。

可選地,如果服務(wù)器接收到的消息的序號小于上次緩存過的序號,則說明客戶端發(fā)送的消息為過期的消息,服務(wù)器直接丟棄不做任何處理。

需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。

通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實施例的方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機(jī),計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。

實施例2

下面結(jié)合優(yōu)選的實施例對本發(fā)明的技術(shù)方案進(jìn)行說明。

該實施例的消息處理方法基于序號的消息機(jī)制,下面分別從客戶端側(cè)和從服務(wù)器側(cè)對本發(fā)明實施例的消息處理方法進(jìn)行說明。

客戶端維護(hù)一個消息隊列,消息隊列中的每條消息可以分為兩種類型,包括:阻塞消息和普通消息。其中,阻塞消息在向服務(wù)器發(fā)送時會將消息隊列中該阻塞消息后面的消息阻塞掉,也即,在消息隊列中該阻塞消息之后的消息暫暫停發(fā)送,直到客戶端收到該阻塞消息對應(yīng)的回包消息時才移除消息隊列,并繼續(xù)發(fā)送消息隊列中該阻塞消息之后的消息,在此過程中,客戶端會驅(qū)動消息阻塞界面提示;普通消息是在客戶端發(fā)送時會被直接移除消息隊列。

圖15是根據(jù)本發(fā)明實施例的一種基于客戶端的消息發(fā)送方法的交互流程圖。如圖15所示,該方法包括以下步驟:

步驟s1501,客戶端接收用戶的更新操作。

客戶端接收用戶的更新操作,該更新操作為購買物品、領(lǐng)取獎勵的操作等。

步驟s1502,客戶端在消息隊列中插入阻塞消息。

更新操作由于會帶來后臺數(shù)據(jù)的變化,因而更新操作產(chǎn)生的消息為阻塞消息。

在客戶端接收用戶的更新操作之后,客戶端在消息隊列中插入阻塞消息。

步驟s1503,在消息隊列中為阻塞消息賦予序號n。

對于阻塞消息,客戶端在發(fā)送時會賦予其唯一自增的序號,作為其在客戶端服務(wù)器之間的標(biāo)識。在客戶端插入阻塞消息之后,在消息隊列中為阻塞消息賦予序號n。

步驟s1504,在消息隊列中向服務(wù)器發(fā)送阻塞消息和序號n。

客戶端在消息隊列中為阻塞消息賦予序號n之后,客戶端向服務(wù)器發(fā)送阻塞消息和序號n。

步驟s1505,客戶端啟動阻塞界面。

在客戶端向服務(wù)器發(fā)送阻塞消息和序號n之后,客戶端啟動阻塞界面,將消息隊列中該阻塞消息后面的消息阻塞掉。

步驟s1506,客戶端接收用戶的查詢操作。

普通消息可以為查詢類的請求,比如,普通消息可以為拉取玩家等級;而對于普通消息,序列號都賦為0。

步驟s1507,客戶端在消息隊列中插入普通消息。

在客戶端接收用戶的查詢操作之后,客戶端在消息隊列中插入普通消息,該普通消息為被阻塞消息阻塞的消息。

步驟s1508,通過消息隊列接收到服務(wù)器對阻塞消息的響應(yīng)消息和序號n。

客戶端在消息隊列中插入普通消息之后,客戶端接收服務(wù)器對阻塞消息的響應(yīng)消息和序號n。

步驟s1509,從消息隊列中移除阻塞消息。

在客戶端接收到服務(wù)器對阻塞消息的響應(yīng)消息和序號n之后,客戶端從消息隊列中移除阻塞消息。

步驟s1510,客戶端停止阻塞界面。

在客戶端從消息隊列中移除阻塞消息之后,客戶端停止阻塞界面,可以繼續(xù)發(fā)送阻塞消息之后的消息。

步驟s1511,從消息隊列中向服務(wù)器發(fā)送被阻塞的普通消息。

在客戶端停止阻塞界面之后,客戶端向服務(wù)器發(fā)送被阻塞的普通消息。

步驟s1512,通過消息隊列接收服務(wù)器對普通消息的響應(yīng)消息。

在客戶端向服務(wù)器發(fā)送被阻塞的普通消息之后,服務(wù)器對普通消息進(jìn)行響應(yīng),得到普通消息的響應(yīng)消息,并向客戶端發(fā)送。

該實施例通過客戶端接收用戶的更新操作,客戶端在消息隊列中插入阻塞消息,客戶端在消息隊列中為阻塞消息賦予序號n,客戶端向服務(wù)器發(fā)送阻塞消息和序號n,客戶端啟動阻塞界面,客戶端接收用戶的查詢操作,客戶端在消息隊列中插入普通消息,客戶端接收服務(wù)器對阻塞消息的響應(yīng)消息和序號n,客戶端從消息隊列中移除阻塞消息,客戶端停止阻塞界面,客戶端向服務(wù)器發(fā)送被阻塞的普通消息,客戶端接收服務(wù)器對普通消息的響應(yīng)消息,由于通過給消息隊列中的消息添加唯一序號,接收到服務(wù)器發(fā)送的響應(yīng)消息中自帶對應(yīng)的序號,這樣客戶端在處理收到的響應(yīng)消息便能對其唯一標(biāo)識,確保了客戶端與服務(wù)器之間數(shù)據(jù)的同步,保證了客戶端與服務(wù)器之間數(shù)據(jù)的一致性,達(dá)到了提高消息處理效率的技術(shù)效果,進(jìn)而解決了相關(guān)技術(shù)中對消息處理的效率低下的技術(shù)問題。

服務(wù)器會記錄當(dāng)前處理過消息中的最高序號,并且緩存最高序號對應(yīng)的消息的回包內(nèi)容,其中,回包內(nèi)容可以為服務(wù)器對接收到的消息進(jìn)行處理得到的響應(yīng)消息。通過判斷每次接收到的消息的序號與上次緩存過的消息的序號的大小關(guān)系,確定向客戶端發(fā)送對接收到的消息的回包內(nèi)容。

圖16是根據(jù)本發(fā)明實施例的一種基于服務(wù)器的消息接收的流程圖。如圖16所示,該方法包括以下步驟:

步驟s1601,服務(wù)器緩存最高序號為seq_latest,對應(yīng)的回包內(nèi)容為reply_latest。

消息隊列中的消息的序號為遞增序號,服務(wù)器記錄當(dāng)前處理過消息中最高的序號seq_latest,并且緩存其回包內(nèi)容reply_latest。

步驟s1602,服務(wù)器接收序號為seq_new的新消息。

服務(wù)器接收序號為seq_new的新消息,可以接收攜帶該新消息的阻塞請求。

步驟s1603,服務(wù)器判斷seq_new與seq_latest的大小。

在服務(wù)器接收序號為seq_new的新消息之后,服務(wù)器判斷seq_new與seq_latest的大小,根據(jù)不同的判斷結(jié)果執(zhí)行步驟s1604至步驟s1607。

步驟s1604,在服務(wù)器判斷出seq_new大于seq_latest時,對新消息進(jìn)行處理,并且更新seq_latest=seq_new,緩存服務(wù)器對新消息進(jìn)行處理得到的新回包內(nèi)容reply_latest。

在服務(wù)器判斷出seq_new大于seq_latest時,則是服務(wù)器接收到的新的阻塞請求,那么服務(wù)器對其進(jìn)行處理,并更新seq_latest為seq_new,更新reply_latest為該次處理的返回包reply_new。

步驟s1605,在服務(wù)器判斷出seq_new等于seq_latest時,與新消息相同的消息已經(jīng)被處理過,返回其緩存內(nèi)容reply_latest。

在服務(wù)器判斷出seq_new等于seq_latest時,則服務(wù)器接收到的是阻塞請求斷線重連后重發(fā)的包,服務(wù)器不對它進(jìn)行二次處理,而是直接返回已經(jīng)緩存過的回包內(nèi)容reply_lates。

步驟s1606,在服務(wù)器判斷出seq_new小于seq_latest時,新消息為過期消息,不進(jìn)行處理。

在服務(wù)器判斷出seq_new小于seq_latest時,則服務(wù)器接收到的消息為過期消息,服務(wù)器直接丟棄不做處理(其實在客戶端層的消息隊列已經(jīng)保證了不會產(chǎn)生這種情況)。

步驟s1607,在服務(wù)器判斷出seq_new=0時,新消息為普通消息,直接處理并返回,不更新seq_latest和reply_lates。

在服務(wù)器判斷出seq_new=0時,則新消息是普通消息,服務(wù)器直接對其進(jìn)行處理并返回,不影響seq_latest和reply_latest。

該實施例的消息隊列中的消息的序號為自增序號,通過記錄當(dāng)前處理過的消息中最高序號,以及服務(wù)器對最高序號對應(yīng)的消息進(jìn)行響應(yīng)得到的回包內(nèi)容,判斷接收到的新消息的序號與緩存過的最高序號的大小關(guān)系,確定向客戶端發(fā)送對接收到的消息的回包消息,從而實現(xiàn)了服務(wù)器對消息的處理,保證了在網(wǎng)絡(luò)不穩(wěn)定的情況下,客戶端與服務(wù)器之間數(shù)據(jù)的一致性,提高了數(shù)據(jù)處理效率。

為了在弱網(wǎng)環(huán)境下提高游戲玩家的游戲體驗,需要基于當(dāng)前網(wǎng)絡(luò)問題的嚴(yán)重程度給到用戶不同的提示反饋,該實施例提出了基于連接狀態(tài)機(jī)的狀態(tài)管理。客戶端層在tcp的鏈接基礎(chǔ)上,封裝了一層connector,每個connector表示著與服務(wù)器的一條長連接,比如,大廳建立一個connector,戰(zhàn)斗建立一個connector。該connector的生命周期是無視底層tcp連接的斷開與否的,即使底層斷開又建立一條新的連接,該connector始終不變。每個connector具有一個連接狀態(tài)機(jī)。

圖17是根據(jù)本發(fā)明實施例的一種客戶端的連接狀態(tài)機(jī)的示意圖。如圖17所示,連接狀態(tài)機(jī)的狀態(tài)包括:初始狀態(tài)(start)、連接狀態(tài)(connecting)、運(yùn)行狀態(tài)(running)、等待狀態(tài)(waiting)和失敗狀態(tài)(fail)。

start狀態(tài):是connector初始化時的狀態(tài)。當(dāng)?shù)谝淮芜M(jìn)行連接時,會調(diào)用底層tcp的連接,并進(jìn)入connecting狀態(tài),該狀態(tài)不影響ui顯示。

connecting狀態(tài):用于表示客戶端第一次連接中或者重新連接中,取決于它的源狀態(tài)是start還是其它。該狀態(tài)的作用是每進(jìn)入一次,會增加其重連計數(shù),用于后續(xù)狀態(tài)判斷是否到達(dá)最大自動重連次數(shù)。當(dāng)連接失敗或者重連失敗,都會進(jìn)入waiting狀態(tài);連接成功將進(jìn)入running狀態(tài)。

running狀態(tài):用于表示客戶端連接成功后的狀態(tài)。該狀態(tài)下客戶端與服務(wù)器將進(jìn)行正常通信。當(dāng)連接超時或者連接斷開時客戶端會進(jìn)入waiting狀態(tài)。

waiting狀態(tài):用于表示網(wǎng)絡(luò)出現(xiàn)異常,并且該狀態(tài)將根據(jù)重連計數(shù)、連接結(jié)果等因素來判斷是否該嘗試下一次重連,如果嘗試下一次重連,那么進(jìn)入connecting狀態(tài);如果已經(jīng)徹底無法建立連接了,或者已經(jīng)達(dá)到了最大重連次數(shù),則進(jìn)入fail狀態(tài)。

fail狀態(tài):用于表示網(wǎng)絡(luò)條件很差,并且無法在設(shè)置的最大重連次數(shù)下重連成功。這種情況一般游戲無法繼續(xù)進(jìn)行,需要用戶手動修復(fù)網(wǎng)絡(luò),進(jìn)行重連,進(jìn)入connecting狀態(tài)。在修復(fù)網(wǎng)絡(luò)過后,可以選擇強(qiáng)制斷開之前的連接并建立新連接,從而回到start狀態(tài)。

該實施例的客戶端可以選擇在不同狀態(tài)下對用戶進(jìn)行不同程度的提示,可以選擇在connecting狀態(tài)、waiting狀態(tài)下,采用輕度提示,讓用戶稍作等待,這個過程中系統(tǒng)進(jìn)行自動重連,待重連成功后關(guān)閉提示。而對于自動重連失敗的fail狀態(tài),該實施例不宜再進(jìn)行自動重連,而是彈出錯誤彈框,來告知用戶嘗試手動修復(fù)網(wǎng)絡(luò),待修復(fù)后可以手動選擇重連來繼續(xù)游戲。

該實施例基于狀態(tài)細(xì)分以及狀態(tài)間轉(zhuǎn)移關(guān)系來給游戲玩家更精確的反饋,對每個連接細(xì)分了五個狀態(tài),并對其間的狀態(tài)轉(zhuǎn)移進(jìn)行了建模,對狀態(tài)的更精確捕捉可以在網(wǎng)絡(luò)狀態(tài)切換時給到用戶更精確的反饋,進(jìn)而提升了用戶體驗;同時,由于狀態(tài)機(jī)中可以明確區(qū)分網(wǎng)絡(luò)的真實情況,也避免了不必要的重連、重登陸導(dǎo)致的流量浪費(fèi)問題。

實施例3

本發(fā)明實施例的應(yīng)用環(huán)境可以但不限于參照上述實施例中的應(yīng)用環(huán)境,本實施例中對此不再贅述。本發(fā)明實施例提供了用于實施上述消息處理方法的一種可選的具體應(yīng)用。

手游同步機(jī)制在弱網(wǎng)下的表現(xiàn)可以由實現(xiàn)的連接狀態(tài)機(jī)所驅(qū)動。對于不同的網(wǎng)絡(luò)狀態(tài),該實施例根據(jù)其網(wǎng)絡(luò)問題的嚴(yán)重程度,給予不同的反饋。

圖18是根據(jù)本發(fā)明實施例的一種消息提示的界面示意圖。如圖18所示,為手游界面,可以由第一即時通訊應(yīng)用登錄,也可以通過第二即時通訊應(yīng)用登錄。由于網(wǎng)絡(luò)延遲導(dǎo)致數(shù)據(jù)包長時間未返回的情況,該實施例將其視為常態(tài),只是輕度提示用戶即可,比如,“正在聯(lián)絡(luò)指揮部…”。在數(shù)據(jù)包返回的同時關(guān)閉掉提示,以盡可能地縮短用戶的等待時間。

可選地,在網(wǎng)絡(luò)處于斷開連接的情況下,客戶端的內(nèi)部會嘗試斷線重連。由于移動環(huán)境的不穩(wěn)定性,網(wǎng)絡(luò)在3g/4g和wifi來回切換是很常見的情況,因此該實施例將這類情形也視為常態(tài),才采用輕度提示,這種情形下的提示界面也可以為圖18所示。

圖19是根據(jù)本發(fā)明實施例的另一種消息提示的界面示意圖。如圖19所示,在超過客戶端允許的最大自動重連次數(shù)后,說明此時的網(wǎng)絡(luò)已經(jīng)無法自動修復(fù)。這時才彈出重度提示,比如,錯誤提示框“網(wǎng)絡(luò)異常,是否繼續(xù)嘗試連接”,用戶可以操作“取消”按鈕以取消連接,或者操作“確定”按鈕以確定連接??蛇x地,詢問用戶是繼續(xù)重連還是返回重新登錄。如果用戶對網(wǎng)絡(luò)進(jìn)行了手動修復(fù),可以選擇“重連”來避免被踢出到登錄界面的繁瑣步驟。

實施例4

根據(jù)本發(fā)明實施例,還提供了一種用于實施上述消息處理方法的消息處理裝置。圖20是根據(jù)本發(fā)明實施例的一種消息處理裝置的示意圖。如圖20所示,該裝置可以包括:獲取單元10、發(fā)送單元20、接收單元30和移除單元40。

獲取單元10,用于從消息隊列中獲取第一消息,其中,消息隊列中存儲多條待發(fā)送消息。

發(fā)送單元20,用于當(dāng)?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務(wù)器發(fā)送第一消息和第一序號,其中,第一序號用于對第一消息進(jìn)行標(biāo)識。

接收單元30,用于接收服務(wù)器發(fā)送的第一響應(yīng)消息,其中,第一響應(yīng)消息用于表示服務(wù)器已對第一消息進(jìn)行處理,第一響應(yīng)消息攜帶有第一序號。

移除單元40,用于從消息隊列中移除第一消息。

需要說明的是,該實施例中的獲取單元10可以用于執(zhí)行本申請實施例1中的步驟s202,該實施例中的發(fā)送單元20可以用于執(zhí)行本申請實施例1中的步驟s204,該實施例中的接收單元30可以用于執(zhí)行本申請實施例1中的步驟s206,該實施例中的移除單元40可以用于執(zhí)行本申請實施例1中的步驟s208。

圖21是根據(jù)本發(fā)明實施例的另一種消息處理裝置的示意圖。如圖21所示,該裝置可以包括:接收單元50、處理單元60和發(fā)送單元70。

接收單元50,用于接收消息隊列中的第一消息和第一序號,其中,消息隊列中存儲多條待發(fā)送消息,第一消息的類型為第一類型,第一序號用于對第一消息進(jìn)行標(biāo)識。

處理單元60,用于對第一消息進(jìn)行處理,得到第一響應(yīng)消息,其中,第一響應(yīng)消息攜帶有第一序號。

發(fā)送單元70,用于向客戶端發(fā)送第一響應(yīng)消息,其中,在客戶端接收到第一響應(yīng)消息之后,第一消息移除了消息隊列。

需要說明的是,該實施例中的接收單元50可以用于執(zhí)行本申請實施例1中的步驟s1202,該實施例中的處理單元60可以用于執(zhí)行本申請實施例1中的步驟s1204,該實施例中的發(fā)送單元70可以用于執(zhí)行本申請實施例1中的步驟s1206。

該實施例通過獲取單元10從消息隊列中獲取第一消息,其中,消息隊列中存儲多條待發(fā)送消息,通過發(fā)送單元20當(dāng)?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務(wù)器發(fā)送第一消息和第一序號,其中,第一序號用于對第一消息進(jìn)行標(biāo)識,通過接收單元30接收服務(wù)器發(fā)送的第一響應(yīng)消息,其中,第一響應(yīng)消息用于表示服務(wù)器已對第一消息進(jìn)行處理,第一響應(yīng)消息攜帶有第一序號,通過移除單元40從消息隊列中移除第一消息,由于通過給消息隊列中的消息添加唯一序號,接收到服務(wù)器發(fā)送的響應(yīng)消息中自帶對應(yīng)的序號,這樣客戶端在處理收到的響應(yīng)消息便能對其唯一標(biāo)識,從而保證客戶端與服務(wù)器之間數(shù)據(jù)的一致性,達(dá)到了提高消息處理效率的技術(shù)效果,進(jìn)而解決了相關(guān)技術(shù)中對消息處理的效率低下的技術(shù)問題。

此處需要說明的是,上述單元與對應(yīng)的步驟所實現(xiàn)的示例和應(yīng)用場景相同,但不限于上述實施例1所公開的內(nèi)容。需要說明的是,上述單元作為裝置的一部分可以運(yùn)行在如圖1所示的硬件環(huán)境中,可以通過軟件實現(xiàn),也可以通過硬件實現(xiàn),其中,硬件環(huán)境包括網(wǎng)絡(luò)環(huán)境。

實施例5

根據(jù)本發(fā)明實施例,還提供了一種用于實施上述消息處理方法的服務(wù)器或終端。

圖22是根據(jù)本發(fā)明實施例的一種終端的結(jié)構(gòu)框圖。如圖22所示,該終端可以包括:一個或多個(圖中僅示出一個)處理器221、存儲器223、以及傳輸裝置225,如圖22所示,該終端還可以包括輸入輸出設(shè)備227。

其中,存儲器223可用于存儲軟件程序以及模塊,如本發(fā)明實施例中的消息處理方法和裝置對應(yīng)的程序指令/模塊,處理器221通過運(yùn)行存儲在存儲器223內(nèi)的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理,即實現(xiàn)上述的消息處理方法。存儲器223可包括高速隨機(jī)存儲器,還可以包括非易失性存儲器,如一個或者多個磁性存儲裝置、閃存、或者其他非易失性固態(tài)存儲器。在一些實例中,存儲器223可進(jìn)一步包括相對于處理器221遠(yuǎn)程設(shè)置的存儲器,這些遠(yuǎn)程存儲器可以通過網(wǎng)絡(luò)連接至終端。上述網(wǎng)絡(luò)的實例包括但不限于互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、局域網(wǎng)、移動通信網(wǎng)及其組合。

上述的傳輸裝置225用于經(jīng)由一個網(wǎng)絡(luò)接收或者發(fā)送數(shù)據(jù),還可以用于處理器與存儲器之間的數(shù)據(jù)傳輸。上述的網(wǎng)絡(luò)具體實例可包括有線網(wǎng)絡(luò)及無線網(wǎng)絡(luò)。在一個實例中,傳輸裝置225包括一個網(wǎng)絡(luò)適配器(networkinterfacecontroller,nic),其可通過網(wǎng)線與其他網(wǎng)絡(luò)設(shè)備與路由器相連從而可與互聯(lián)網(wǎng)或局域網(wǎng)進(jìn)行通訊。在一個實例中,傳輸裝置225為射頻(radiofrequency,rf)模塊,其用于通過無線方式與互聯(lián)網(wǎng)進(jìn)行通訊。

其中,具體地,存儲器223用于存儲應(yīng)用程序。

處理器221可以通過傳輸裝置225調(diào)用存儲器223存儲的應(yīng)用程序,以執(zhí)行下述步驟:

從消息隊列中獲取第一消息,其中,消息隊列中存儲多條待發(fā)送消息;

當(dāng)?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務(wù)器發(fā)送第一消息和第一序號,其中,第一序號用于對第一消息進(jìn)行標(biāo)識;

接收服務(wù)器發(fā)送的第一響應(yīng)消息,其中,第一響應(yīng)消息用于表示服務(wù)器已對第一消息進(jìn)行處理,第一響應(yīng)消息攜帶有第一序號;

從消息隊列中移除第一消息。

處理器221還用于執(zhí)行下述步驟:在向服務(wù)器發(fā)送第一消息和第一序號之后、且在接收服務(wù)器發(fā)送的第一響應(yīng)消息之前,接收到插入到消息隊列中的第二消息,其中,第二消息的類型為第二類型;在從消息隊列中移除第一消息之后,向服務(wù)器發(fā)送第二消息。

處理器221還用于執(zhí)行下述步驟:在向服務(wù)器發(fā)送第二消息時,從消息隊列中移除第二消息。

處理器221還用于執(zhí)行下述步驟:向服務(wù)器發(fā)送第二消息和第二序號,其中,第二序號用于對第二消息進(jìn)行標(biāo)識;在向服務(wù)器發(fā)送第二消息之后,接收服務(wù)器發(fā)送的第二響應(yīng)消息,其中,第二響應(yīng)消息用于表示服務(wù)器已對第二消息進(jìn)行處理,第二響應(yīng)消息攜帶有第二序號。

處理器221還用于執(zhí)行下述步驟:在從消息隊列中獲取第一消息之后,當(dāng)?shù)谝幌⒌念愋蜑榈诙愋蜁r,向服務(wù)器發(fā)送第一消息和第一序號,并從消息隊列中移除第一消息;接收服務(wù)器發(fā)送的第一響應(yīng)消息。

處理器221還用于執(zhí)行下述步驟:在向服務(wù)器發(fā)送第一消息和第一序號之后、且在接收服務(wù)器發(fā)送的第一響應(yīng)消息之前,接收到插入到消息隊列中的第三消息,其中,第三消息的類型為第一類型;在從消息隊列中移除第一消息之后,向服務(wù)器發(fā)送第三消息和第三序號,其中,第三序號用于對第三消息進(jìn)行標(biāo)識,第三序號大于第一序號;接收服務(wù)器發(fā)送的第三響應(yīng)消息,其中,第三響應(yīng)消息用于表示服務(wù)器已對第三消息進(jìn)行處理,第三響應(yīng)消息攜帶有第三序號;從消息隊列中移除第三消息。

處理器221還用于執(zhí)行下述步驟:在向服務(wù)器發(fā)送第一消息和第一序號之后、且在接收服務(wù)器發(fā)送的第一響應(yīng)消息之前,接收到插入到消息隊列中的第四消息,其中,第四消息的類型為第一類型;在從消息隊列中移除第一消息之后,向服務(wù)器發(fā)送第四消息和第四序號,其中,第四序號用于對第四消息進(jìn)行標(biāo)識,第四序號等于第一序號;接收服務(wù)器發(fā)送的已經(jīng)緩存過的第一響應(yīng)消息;從消息隊列中移除第四消息。

處理器221還用于執(zhí)行下述步驟:在向服務(wù)器發(fā)送第一消息和第一序號之后,判斷在向服務(wù)器發(fā)送第一消息和第一序號之后,未接收到第一響應(yīng)消息的等待時間是否超過第一預(yù)設(shè)時間;如果判斷出等待時間超過第一預(yù)設(shè)時間,顯示第一提示消息,其中,第一提示消息用于提示繼續(xù)等待接收第一響應(yīng)消息;當(dāng)接收到第一響應(yīng)消息時,關(guān)閉第一提示消息。

處理器221還用于執(zhí)行下述步驟:在向服務(wù)器發(fā)送第一消息和第一序號之后,在與服務(wù)器斷開連接的情況下,自動發(fā)送與服務(wù)器重新建立連接的第一請求;顯示第二提示信息,其中,第二提示信息用于提示與服務(wù)器重新建立連接中。

處理器221還用于執(zhí)行下述步驟:在向服務(wù)器發(fā)送第一消息和第一序號之后,在與服務(wù)器斷開連接的情況下,獲取自動與服務(wù)器重新建立連接的連接次數(shù);判斷連接次數(shù)是否大于預(yù)設(shè)連接次數(shù);如果判斷出連接次數(shù)大于預(yù)設(shè)連接次數(shù),顯示第三提示信息,其中,第三提示信息用于提示與服務(wù)器無法建立連接。

處理器221還用于執(zhí)行下述步驟:在顯示第三提示信息之后,接收第一操作信息,其中,第一操作信息用于觸發(fā)重新與服務(wù)器建立連接;或者接收第二操作信息,其中,第二操作信息用于指示通過重新登錄與服務(wù)器建立連接。

處理器221還用于執(zhí)行下述步驟:在向服務(wù)器發(fā)送第一消息和第一序號之前,從應(yīng)用層連接的初始狀態(tài)進(jìn)入連接狀態(tài),其中,連接狀態(tài)為在與服務(wù)器建立連接的狀態(tài);在與服務(wù)器建立連接失敗的情況下,進(jìn)入等待狀態(tài),其中,等待狀態(tài)為用于指示網(wǎng)絡(luò)出現(xiàn)異常的狀態(tài);在與服務(wù)器成功建立連接的情況下,進(jìn)入運(yùn)行狀態(tài),其中,運(yùn)行狀態(tài)用于指示與服務(wù)器成功建立連接之后的狀態(tài)。

處理器221還用于執(zhí)行下述步驟:在進(jìn)入等待狀態(tài)之后,判斷與服務(wù)器重新建立連接的連接次數(shù)是否超過預(yù)設(shè)次數(shù);如果判斷出連接次數(shù)未超過預(yù)設(shè)次數(shù),進(jìn)入連接狀態(tài);如果判斷出連接次數(shù)超過預(yù)設(shè)次數(shù),進(jìn)入失敗狀態(tài),其中,失敗狀態(tài)為用于指示無法與服務(wù)器建立連接的狀態(tài)。

處理器221還用于執(zhí)行下述步驟:在進(jìn)入連接狀態(tài)或進(jìn)入等待狀態(tài)時,顯示第二提示信息,其中,第二提示信息用于提示與服務(wù)器重新建立連接中;在進(jìn)入失敗狀態(tài)時,顯示第三提示信息,其中,第三提示信息用于提示與服務(wù)器無法建立連接。

可選地,處理器221還可以通過傳輸裝置225調(diào)用存儲器223存儲的應(yīng)用程序,以執(zhí)行下述步驟:

接收消息隊列中的第一消息和第一序號,其中,消息隊列中存儲多條待發(fā)送消息,第一消息的類型為第一類型,第一序號用于對第一消息進(jìn)行標(biāo)識;

對第一消息進(jìn)行處理,得到第一響應(yīng)消息,其中,第一響應(yīng)消息攜帶有第一序號;

向客戶端發(fā)送第一響應(yīng)消息,其中,在客戶端接收到第一響應(yīng)消息之后,第一消息移除了消息隊列。

處理器221還用于執(zhí)行下述步驟:在發(fā)送第一響應(yīng)消息之后,方法還包括:接收到插入到消息隊列中的第二消息和第二序號,其中,第二消息的類型為第二類型,第二序號用于對第二消息進(jìn)行標(biāo)識;對第二消息進(jìn)行處理,得到第二響應(yīng)消息,其中,第二響應(yīng)消息攜帶有第二序號;發(fā)送第二響應(yīng)消息。

處理器221還用于執(zhí)行下述步驟:在發(fā)送第一響應(yīng)消息之后,緩存第一序號和第一響應(yīng)消息。

處理器221還用于執(zhí)行下述步驟:在發(fā)送第一響應(yīng)消息之后,接收到插入到消息隊列中的第三消息和第三序號,其中,第三消息的類型為第一類型,第三序號用于對第三消息進(jìn)行標(biāo)識;判斷第三序號是否大于第一序號;如果出判斷第三序號大于第一序號,對第三消息進(jìn)行處理,得到第三響應(yīng)消息,其中,第三響應(yīng)消息攜帶有第三序號;發(fā)送第三響應(yīng)消息。

處理器221還用于執(zhí)行下述步驟:在發(fā)送第三響應(yīng)消息之后,緩存第三序號和第三響應(yīng)消息。

處理器221還用于執(zhí)行下述步驟:在判斷第三序號是否大于第一序號之后,如果判斷出第三序號等于第一序號,發(fā)送第一響應(yīng)消息。

采用本發(fā)明實施例,提供了一種消息處理方案,從消息隊列中獲取第一消息,其中,消息隊列中存儲多條待發(fā)送消息;當(dāng)?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務(wù)器發(fā)送第一消息和第一序號,其中,第一序號用于對第一消息進(jìn)行標(biāo)識;接收服務(wù)器發(fā)送的第一響應(yīng)消息,其中,第一響應(yīng)消息用于表示服務(wù)器已對第一消息進(jìn)行處理,第一響應(yīng)消息攜帶有第一序號;從消息隊列中移除第一消息,由于通過給消息隊列中的消息添加唯一序號,接收到服務(wù)器發(fā)送的響應(yīng)消息中自帶對應(yīng)的序號,這樣客戶端在處理收到的響應(yīng)消息便能對其唯一標(biāo)識,從而保證客戶端與服務(wù)器之間數(shù)據(jù)的一致性,達(dá)到了提高消息處理效率的技術(shù)效果,進(jìn)而解決了相關(guān)技術(shù)中對消息處理的效率低下的技術(shù)問題。

可選地,本實施例中的具體示例可以參考上述實施例中所描述的示例,本實施例在此不再贅述。

本領(lǐng)域普通技術(shù)人員可以理解,圖22所示的結(jié)構(gòu)僅為示意,終端可以是智能手機(jī)(如android手機(jī)、ios手機(jī)等)、平板電腦、掌上電腦以及移動互聯(lián)網(wǎng)設(shè)備(mobileinternetdevices,mid)、pad等終端設(shè)備。圖22其并不對上述電子裝置的結(jié)構(gòu)造成限定。例如,終端還可包括比圖22中所示更多或者更少的組件(如網(wǎng)絡(luò)接口、顯示裝置等),或者具有與圖22所示不同的配置。

本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令終端設(shè)備相關(guān)的硬件來完成,該程序可以存儲于一計算機(jī)可讀存儲介質(zhì)中,存儲介質(zhì)可以包括:閃存盤、只讀存儲器(read-onlymemory,rom)、隨機(jī)存取器(randomaccessmemory,ram)、磁盤或光盤等。

實施例6

本發(fā)明的實施例還提供了一種存儲介質(zhì)??蛇x地,在本實施例中,上述存儲介質(zhì)可以用于執(zhí)行消息處理方法的程序代碼。

可選地,在本實施例中,上述存儲介質(zhì)可以位于上述實施例所示的網(wǎng)絡(luò)中的多個網(wǎng)絡(luò)設(shè)備中的至少一個網(wǎng)絡(luò)設(shè)備上。

可選地,在本實施例中,存儲介質(zhì)被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:

從消息隊列中獲取第一消息,其中,消息隊列中存儲多條待發(fā)送消息;

當(dāng)?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務(wù)器發(fā)送第一消息和第一序號,其中,第一序號用于對第一消息進(jìn)行標(biāo)識;

接收服務(wù)器發(fā)送的第一響應(yīng)消息,其中,第一響應(yīng)消息用于表示服務(wù)器已對第一消息進(jìn)行處理,第一響應(yīng)消息攜帶有第一序號;

從消息隊列中移除第一消息。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:在向服務(wù)器發(fā)送第一消息和第一序號之后、且在接收服務(wù)器發(fā)送的第一響應(yīng)消息之前,接收到插入到消息隊列中的第二消息,其中,第二消息的類型為第二類型;在從消息隊列中移除第一消息之后,向服務(wù)器發(fā)送第二消息。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:在向服務(wù)器發(fā)送第二消息時,從消息隊列中移除第二消息。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:向服務(wù)器發(fā)送第二消息和第二序號,其中,第二序號用于對第二消息進(jìn)行標(biāo)識;在向服務(wù)器發(fā)送第二消息之后,接收服務(wù)器發(fā)送的第二響應(yīng)消息,其中,第二響應(yīng)消息用于表示服務(wù)器已對第二消息進(jìn)行處理,第二響應(yīng)消息攜帶有第二序號。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:在從消息隊列中獲取第一消息之后,當(dāng)?shù)谝幌⒌念愋蜑榈诙愋蜁r,向服務(wù)器發(fā)送第一消息和第一序號,并從消息隊列中移除第一消息;接收服務(wù)器發(fā)送的第一響應(yīng)消息。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:在向服務(wù)器發(fā)送第一消息和第一序號之后、且在接收服務(wù)器發(fā)送的第一響應(yīng)消息之前,接收到插入到消息隊列中的第三消息,其中,第三消息的類型為第一類型;在從消息隊列中移除第一消息之后,向服務(wù)器發(fā)送第三消息和第三序號,其中,第三序號用于對第三消息進(jìn)行標(biāo)識,第三序號大于第一序號;接收服務(wù)器發(fā)送的第三響應(yīng)消息,其中,第三響應(yīng)消息用于表示服務(wù)器已對第三消息進(jìn)行處理,第三響應(yīng)消息攜帶有第三序號;從消息隊列中移除第三消息。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:在向服務(wù)器發(fā)送第一消息和第一序號之后、且在接收服務(wù)器發(fā)送的第一響應(yīng)消息之前,接收到插入到消息隊列中的第四消息,其中,第四消息的類型為第一類型;在從消息隊列中移除第一消息之后,向服務(wù)器發(fā)送第四消息和第四序號,其中,第四序號用于對第四消息進(jìn)行標(biāo)識,第四序號等于第一序號;接收服務(wù)器發(fā)送的已經(jīng)緩存過的第一響應(yīng)消息;從消息隊列中移除第四消息。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:在向服務(wù)器發(fā)送第一消息和第一序號之后,判斷在向服務(wù)器發(fā)送第一消息和第一序號之后,未接收到第一響應(yīng)消息的等待時間是否超過第一預(yù)設(shè)時間;如果判斷出等待時間超過第一預(yù)設(shè)時間,顯示第一提示消息,其中,第一提示消息用于提示繼續(xù)等待接收第一響應(yīng)消息;當(dāng)接收到第一響應(yīng)消息時,關(guān)閉第一提示消息。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:在向服務(wù)器發(fā)送第一消息和第一序號之后,在與服務(wù)器斷開連接的情況下,自動發(fā)送與服務(wù)器重新建立連接的第一請求;顯示第二提示信息,其中,第二提示信息用于提示與服務(wù)器重新建立連接中。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:在向服務(wù)器發(fā)送第一消息和第一序號之后,在與服務(wù)器斷開連接的情況下,獲取自動與服務(wù)器重新建立連接的連接次數(shù);判斷連接次數(shù)是否大于預(yù)設(shè)連接次數(shù);如果判斷出連接次數(shù)大于預(yù)設(shè)連接次數(shù),顯示第三提示信息,其中,第三提示信息用于提示與服務(wù)器無法建立連接。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:在顯示第三提示信息之后,接收第一操作信息,其中,第一操作信息用于觸發(fā)重新與服務(wù)器建立連接;或者接收第二操作信息,其中,第二操作信息用于指示通過重新登錄與服務(wù)器建立連接。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:在向服務(wù)器發(fā)送第一消息和第一序號之前,從應(yīng)用層連接的初始狀態(tài)進(jìn)入連接狀態(tài),其中,連接狀態(tài)為在與服務(wù)器建立連接的狀態(tài);在與服務(wù)器建立連接失敗的情況下,進(jìn)入等待狀態(tài),其中,等待狀態(tài)為用于指示網(wǎng)絡(luò)出現(xiàn)異常的狀態(tài);在與服務(wù)器成功建立連接的情況下,進(jìn)入運(yùn)行狀態(tài),其中,運(yùn)行狀態(tài)用于指示與服務(wù)器成功建立連接之后的狀態(tài)。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:在進(jìn)入等待狀態(tài)之后,判斷與服務(wù)器重新建立連接的連接次數(shù)是否超過預(yù)設(shè)次數(shù);如果判斷出連接次數(shù)未超過預(yù)設(shè)次數(shù),進(jìn)入連接狀態(tài);如果判斷出連接次數(shù)超過預(yù)設(shè)次數(shù),進(jìn)入失敗狀態(tài),其中,失敗狀態(tài)為用于指示無法與服務(wù)器建立連接的狀態(tài)。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:在進(jìn)入連接狀態(tài)或進(jìn)入等待狀態(tài)時,顯示第二提示信息,其中,第二提示信息用于提示與服務(wù)器重新建立連接中;在進(jìn)入失敗狀態(tài)時,顯示第三提示信息,其中,第三提示信息用于提示與服務(wù)器無法建立連接。

可選地,在本實施例中,存儲介質(zhì)被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:

接收消息隊列中的第一消息和第一序號,其中,消息隊列中存儲多條待發(fā)送消息,第一消息的類型為第一類型,第一序號用于對第一消息進(jìn)行標(biāo)識;

對第一消息進(jìn)行處理,得到第一響應(yīng)消息,其中,第一響應(yīng)消息攜帶有第一序號;

向客戶端發(fā)送第一響應(yīng)消息,其中,在客戶端接收到第一響應(yīng)消息之后,第一消息移除了消息隊列。

在發(fā)送第一響應(yīng)消息之后,方法還包括:接收到插入到消息隊列中的第二消息和第二序號,其中,第二消息的類型為第二類型,第二序號用于對第二消息進(jìn)行標(biāo)識;對第二消息進(jìn)行處理,得到第二響應(yīng)消息,其中,第二響應(yīng)消息攜帶有第二序號;發(fā)送第二響應(yīng)消息。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:在發(fā)送第一響應(yīng)消息之后,緩存第一序號和第一響應(yīng)消息。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:在發(fā)送第一響應(yīng)消息之后,接收到插入到消息隊列中的第三消息和第三序號,其中,第三消息的類型為第一類型,第三序號用于對第三消息進(jìn)行標(biāo)識;判斷第三序號是否大于第一序號;如果出判斷第三序號大于第一序號,對第三消息進(jìn)行處理,得到第三響應(yīng)消息,其中,第三響應(yīng)消息攜帶有第三序號;發(fā)送第三響應(yīng)消息。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:在發(fā)送第三響應(yīng)消息之后,緩存第三序號和第三響應(yīng)消息。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:在判斷第三序號是否大于第一序號之后,如果判斷出第三序號等于第一序號,發(fā)送第一響應(yīng)消息。

可選地,本實施例中的具體示例可以參考上述實施例中所描述的示例,本實施例在此不再贅述。

可選地,在本實施例中,上述存儲介質(zhì)可以包括但不限于:u盤、只讀存儲器(rom,read-onlymemory)、隨機(jī)存取存儲器(ram,randomaccessmemory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。

上述本發(fā)明實施例序號僅僅為了描述,不表示實施例的優(yōu)劣。

上述實施例中的集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時,可以存儲在上述計算機(jī)可讀取的存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在存儲介質(zhì)中,包括若干指令用以使得一臺或多臺計算機(jī)設(shè)備(可為個人計算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。

在本發(fā)明的上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關(guān)描述。

在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的客戶端,可通過其它的方式實現(xiàn)。其中,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。

所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。

另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。

以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1