本發(fā)明涉及消息處理領域,具體而言,涉及一種消息處理方法和裝置。
背景技術(shù):
目前,不穩(wěn)定的網(wǎng)絡環(huán)境會影響客戶端對消息的處理效率,主要體現(xiàn)為在2g/3g/4g網(wǎng)、無線局域網(wǎng)(wireless-fidelity,簡稱為wifi)的頻繁切換,以及移動網(wǎng)絡的延遲和波動,比如,當前手游存在的重要問題之一為網(wǎng)絡環(huán)境不穩(wěn)定。這種不穩(wěn)定的網(wǎng)絡環(huán)境給客戶端的消息處理帶來了以下幾個主要問題:
(1)使客戶端與服務器間之間的數(shù)據(jù)傳輸不一致;
(2)由于缺乏網(wǎng)絡連接狀態(tài)管理而導致在弱網(wǎng)時的用戶體驗低;
(3)由于會出現(xiàn)不必要的重連、重登陸等,帶來流量的耗費。
另外,目前對消息的管理方式是基于消息類型的,這種方式通過消息的類型(msgtype)來標識一條消息,它的好處是易于實現(xiàn)。因為消息收發(fā)庫自帶消息類型,只要根據(jù)內(nèi)部定義的消息類型來管理消息即可。但是,如果存在兩條或以上同種類型的消息時,就無法對其做唯一標識。這樣當網(wǎng)絡較差,出現(xiàn)丟包的情況時,客戶端就無法區(qū)分服務器回復的哪條發(fā)送消息,從而導致消息處理的效率低下。
現(xiàn)有的手游的連接管理是對關鍵狀態(tài)的追蹤,主要包含連接中、連接超時、連接斷開三個狀態(tài)。然而,由于對狀態(tài)缺乏細分和轉(zhuǎn)移建模,并沒有基于狀態(tài)細分以及狀態(tài)間轉(zhuǎn)移關系來給游戲玩家更精確的反饋,顯然也不能滿足日益增進的用戶需求。
針對上述對消息處理的效率低下的問題,目前尚未提出有效的解決方案。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種消息處理方法和裝置,以至少解決相關技術(shù)中對消息處理的效率低下的技術(shù)問題。
根據(jù)本發(fā)明實施例的一個方面,提供了一種消息處理方法。該方法包括:從消息隊列中獲取第一消息,其中,消息隊列中存儲多條待發(fā)送消息;當?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務器發(fā)送第一消息和第一序號,其中,第一序號用于對第一消息進行標識;接收服務器發(fā)送的第一響應消息,其中,第一響應消息用于表示服務器已對第一消息進行處理,第一響應消息攜帶有第一序號;從消息隊列中移除第一消息。
根據(jù)本發(fā)明實施例的另一個方面,還提供了一種消息處理方法。該方法包括:接收消息隊列中的第一消息和第一序號,其中,消息隊列中存儲多條待發(fā)送消息,第一消息的類型為第一類型,第一序號用于對第一消息進行標識;對第一消息進行處理,得到第一響應消息,其中,第一響應消息攜帶有第一序號;向客戶端發(fā)送第一響應消息,其中,在客戶端接收到第一響應消息之后,第一消息移除了消息隊列。
根據(jù)本發(fā)明實施例的另一個方面,還提供了一種消息處理裝置。該裝置包括:獲取單元,用于從消息隊列中獲取第一消息,其中,消息隊列中存儲多條待發(fā)送消息;發(fā)送單元,用于當?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務器發(fā)送第一消息和第一序號,其中,第一序號用于對第一消息進行標識;接收單元,用于接收服務器發(fā)送的第一響應消息,其中,第一響應消息用于表示服務器已對第一消息進行處理,第一響應消息攜帶有第一序號;移除單元,用于從消息隊列中移除第一消息。
根據(jù)本發(fā)明實施例的另一方面,還提供了一種消息處理裝置。該裝置包括:接收單元,用于接收消息隊列中的第一消息和第一序號,其中,消息隊列中存儲多條待發(fā)送消息,第一消息的類型為第一類型,第一序號用于對第一消息進行標識;處理單元,用于對第一消息進行處理,得到第一響應消息,其中,第一響應消息攜帶有第一序號;發(fā)送單元,用于向客戶端發(fā)送第一響應消息,其中,在客戶端接收到第一響應消息之后,第一消息移除了消息隊列。
在本發(fā)明實施例中,從消息隊列中獲取第一消息,其中,消息隊列中存儲多條待發(fā)送消息;當?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務器發(fā)送第一消息和第一序號,其中,第一序號用于對第一消息進行標識;接收服務器發(fā)送的第一響應消息,其中,第一響應消息用于表示服務器已對第一消息進行處理,第一響應消息攜帶有第一序號;從消息隊列中移除第一消息,由于通過給消息隊列中的消息添加唯一序號,接收到服務器發(fā)送的響應消息中自帶對應的序號,這樣客戶端在處理收到的響應消息便能對其唯一標識,從而保證客戶端與服務器之間數(shù)據(jù)的一致性,達到了提高消息處理效率的技術(shù)效果,進而解決了相關技術(shù)中對消息處理的效率低下的技術(shù)問題。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當限定。在附圖中:
圖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ā)明實施例的一種基于服務器的消息接收的流程圖;
圖17是根據(jù)本發(fā)明實施例的一種客戶端的連接狀態(tài)機的示意圖;
圖18是根據(jù)本發(fā)明實施例的一種消息提示的界面示意圖;
圖19是根據(jù)本發(fā)明實施例的另一種消息提示的界面示意圖;
圖20是根據(jù)本發(fā)明實施例的一種消息處理裝置的示意圖;
圖21是根據(jù)本發(fā)明實施例的另一種消息處理裝置的示意圖;以及
圖22是根據(jù)本發(fā)明實施例的一種終端的結(jié)構(gòu)框圖。
具體實施方式
為了使本技術(shù)領域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應當屬于本發(fā)明保護的范圍。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應該理解這樣使用的數(shù)據(jù)在適當情況下可以互換,以便這里描述的本發(fā)明的實施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤4送?,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設備固有的其它步驟或單元。
實施例1
根據(jù)本發(fā)明實施例,提供了一種消息處理方法的實施例。
可選地,在本實施例中,上述消息處理方法可以應用于如圖1所示的由服務器102和終端104所構(gòu)成的硬件環(huán)境中。圖1是根據(jù)本發(fā)明實施例的一種消息處理方法的硬件環(huán)境的示意圖。如圖1所示,服務器102通過網(wǎng)絡與終端104進行連接,上述網(wǎng)絡包括但不限于:廣域網(wǎng)、城域網(wǎng)或局域網(wǎng),終端104并不限定于pc、手機、平板電腦等。本發(fā)明實施例的消息處理方法可以由服務器102來執(zhí)行,也可以由終端104來執(zhí)行,還可以是由服務器102和終端104共同執(zhí)行。其中,終端104執(zhí)行本發(fā)明實施例的消息處理方法也可以是由安裝在其上的客戶端來執(zhí)行。
圖2是根據(jù)本發(fā)明實施例的一種消息處理方法的流程圖。如圖2所示,該方法可以包括以下步驟:
步驟s202,從消息隊列中獲取第一消息。
在本發(fā)明上述步驟s202提供的技術(shù)方案中,從消息隊列中獲取第一消息,其中,消息隊列中存儲多條待發(fā)送消息。
該實施例的消息隊列用于存儲客戶端向服務器待發(fā)的多條消息,該消息可以為在客戶端向服務器發(fā)送查詢請求時發(fā)送的消息,比如,在客戶端拉取玩家等級使用的普通消息,也可以為在客戶端向服務器發(fā)送更新請求時發(fā)送的消息,比如,在客戶端購買物品、領取獎勵時使用的阻塞消息,其中,客戶端可以為游戲客戶端。
在預設網(wǎng)絡環(huán)境下,從消息隊列中獲取第一消息,該第一消息為插入消息隊列中的消息。該預設網(wǎng)絡環(huán)境可以為網(wǎng)絡環(huán)境不穩(wěn)定的網(wǎng)絡環(huán)境,比如,在2g/3g/4g、wifi的頻繁切換的網(wǎng)絡環(huán)境下,可以為移動網(wǎng)絡的延遲和波動的網(wǎng)絡環(huán)境。
步驟s204,當?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務器發(fā)送第一消息和第一序號。
在本發(fā)明上述步驟s204提供的技術(shù)方案中,當?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務器發(fā)送第一消息和第一序號,其中,第一序號用于對第一消息進行標識。
消息隊列中的每個消息通過序號進行唯一標識,可選地,消息隊列中的消息的序號按照發(fā)送的時間遞增,客戶端也可以在消息發(fā)送的時候,賦予消息對應的序號。
消息隊列中的消息具有不同的類型,在從消息隊列中獲取第一消息之后,判斷第一消息的類型。該第一類型的消息在向客戶端發(fā)送時會阻塞消息隊列中位于該第一消息之后的消息,也即,在客戶端接收到服務器對第一消息進行響應的響應消息之前,暫停發(fā)送在消息隊列中的第一消息之后的消息,直到在客戶端接收到服務器對第一消息進行響應的響應消息之后,才可以發(fā)送消息隊列中的第一消息之后的消息,該第一類型的第一消息為阻塞消息??蛇x地,第一類型的消息會帶來后臺數(shù)據(jù)的變化,可以為在對客戶端執(zhí)行更新操作下的更新類消息,比如,為用于購買物品的消息、用于領取獎勵的消息。
在客戶端與服務器建立連接的情況下,在判斷第一消息的類型之后,如果判斷出第一消息的類型為第一類型時,向服務器發(fā)送第一消息和第一序號,該第一序號用于對第一消息進行標識,從而將第一消息與消息隊列中的其它消息區(qū)分開??蛇x地,在判斷第一消息的類型之后,如果判斷出第一消息的類型為第一類型時,向客戶端發(fā)送用于請求服務器對第一消息進行處理的請求,該請求攜帶有第一消息和第一序號。
可選地,在客戶端向服務器發(fā)送第一消息之后,顯示出啟動消息阻塞的界面,從而避免用戶對客戶端操作多次。
步驟s206,接收服務器發(fā)送的第一響應消息。
在本發(fā)明上述步驟s206提供的技術(shù)方案中,接收服務器發(fā)送的第一響應消息,其中,第一響應消息用于表示服務器已對第一消息進行處理,第一響應消息攜帶有第一序號。
在向服務器發(fā)送第一消息和第一序號之后,服務器對第一消息進行處理,得到第一響應消息。可選地,服務器在接收到第一消息和第一序號之后,判斷有沒有緩存過第一序號,如果服務器沒有緩存過第一序號,則該第一消息是第一次向服務器發(fā)送的消息,服務器對第一消息進行處理,得到第一響應消息;如果判斷出服務器緩存過第一序號,則該第一消息為在斷線重連之后,重新向服務器發(fā)送的消息,則服務器直接向客戶端發(fā)送之前已經(jīng)對第一消息進行處理得到的第一響應消息。
可選地,服務器在接收到對攜帶有第一消息和第一序號的請求之后,對該請求進行響應,得到第一響應消息,該第一響應消息也即為服務器對第一消息進行處理得到的回包消息。
上述響應消息用于表示服務器已經(jīng)對第一消息進行處理,并且攜帶有第一序號,也即,第一響應消息通過第一序號進行唯一標識。服務器在對第一消息進行處理得到第一響應消息之后,可以對第一響應消息和第一序號進行緩存,也可以通過與后續(xù)發(fā)送的消息對應的響應消息和對應的序號進行更新。
客戶端接收服務器發(fā)送的第一響應消息,由于該第一響應消息也攜帶用于標識第一消息的第一序號,因而客戶端可以唯一確認第一響應消息為服務器對第一消息進行處理得到的響應消息,從而確保了客戶端和服務器之間發(fā)送與接收的數(shù)據(jù)的一致性,避免了由于網(wǎng)絡環(huán)境不穩(wěn)定而導致的客戶端與服務器間的數(shù)據(jù)不一致,進而有利于客戶端與服務器之間進行正常的數(shù)據(jù)通信。
步驟s208,從消息隊列中移除第一消息。
在本發(fā)明上述步驟s208提供的技術(shù)方案中,從消息隊列中移除第一消息。
在接收服務器發(fā)送的第一響應消息之后,客戶端從消息隊列中移除第一消息,此時,該消息隊列中的第一消息之后的消息才可以發(fā)送。
通過上述步驟s202至步驟s208,在本發(fā)明實施例中,從消息隊列中獲取第一消息,其中,消息隊列中存儲多條待發(fā)送消息;當?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務器發(fā)送第一消息和第一序號,其中,第一序號用于對第一消息進行標識;接收服務器發(fā)送的第一響應消息,其中,第一響應消息用于表示服務器已對第一消息進行處理,第一響應消息攜帶有第一序號;從消息隊列中移除第一消息,由于通過給消息隊列中的消息添加唯一序號,接收到服務器發(fā)送的響應消息中自帶對應的序號,這樣客戶端在處理收到的響應消息便能對其唯一標識,確保了客戶端與服務器之間數(shù)據(jù)的同步,保證了客戶端與服務器之間數(shù)據(jù)的一致性,達到了提高消息處理效率的技術(shù)效果,進而解決了相關技術(shù)中對消息處理的效率低下的技術(shù)問題。
作為一種可選的實施方式,在步驟s204向服務器發(fā)送第一消息和第一序號之后、且在步驟s206接收服務器發(fā)送的第一響應消息之前,該消息方法還包括:接收到插入到消息隊列中的第二消息,其中,第二消息的類型為第二類型;在從消息隊列中移除第一消息之后,向服務器發(fā)送第二消息。
消息隊列中存儲的消息可以不斷地插入消息。在客戶端向服務器發(fā)送第一消息和第一序號之后,且在客戶端接收服務器發(fā)送的第一響應消息之前,接收到消息隊列中的第二消息,該第二消息在消息隊列中位于第一消息之后。由于第一消息的類型為第一類型,也即,第一消息為阻塞消息,因而第二消息為被第一消息在消息隊列中阻塞的消息。第二消息的類型與第一消息的類型不同,可以為消息的普通類型。該第二消息可以為在客戶端執(zhí)行查詢操作下的查詢類消息,比如,用于拉取玩家等級的消息。
在客戶端接收到第一響應消息之后,客戶端從消息隊列中移除第一消息。在客戶端從消息隊列中移除第一消息之后,客戶端停止對消息隊列中的第二消息進行阻塞,向服務器發(fā)送上述第二消息。
可選地,在客戶端向服務器發(fā)送第二消息時,賦予第二消息的序號為大于第二序號。
作為一種可選的實施方式,在向服務器發(fā)送第二消息時,該消息處理方法還包括:從消息隊列中移除第二消息。
第二類型的消息不會影響后臺數(shù)據(jù)的變化,客戶端在向服務器發(fā)送第二類型的第二消息時,可以直接從消息隊列中移除,從而確保位于消息隊列中的第二消息之后的消息可以正常發(fā)出,提高消息的處理效率。
作為一種可選的實施方式,向服務器發(fā)送第二消息包括:向服務器發(fā)送第二消息和用于對第二消息進行標識的第二序號;在向服務器發(fā)送第二消息之后,該消息處理方法還包括:接收服務器發(fā)送的表示服務器已對第二消息進行處理的第二響應消息,第二響應消息攜帶有第二序號。
圖3是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖3所示,該方法還包括以下步驟:
步驟s301,向服務器發(fā)送第二消息和第二序號。
在本發(fā)明上述步驟s301提供的技術(shù)方案中,向服務器發(fā)送第二消息和第二序號。
第二消息的類型為消息的普通類型,可以通過預設序號進行標識。在消息隊列中位于第一消息之后的第二消息通過第二序號進行標識,第二序號為上述預設序號,比如,第二序號為0。可選地,當消息隊列中的消息的序號為0時,可以確定消息的類型為第二類型,也即,確定消息的類型為普通類型。
在從消息隊列中移除第一消息之后,向服務器發(fā)送第二消息和第二序號。可選地,向客戶端發(fā)送用于請求服務器對第二消息進行處理的請求,該請求攜帶有第二消息和第二序號。
步驟s302,接收服務器發(fā)送的第二響應消息。
在本發(fā)明上述步驟s302提供的技術(shù)方案中,接收服務器發(fā)送的第二響應消息。
在向服務器發(fā)送第二消息和第二序號之后,服務器對第二消息進行處理,得到第二響應消息??蛇x地,服務器在接收到對攜帶有第二消息和第二序號的請求之后,對該請求進行響應,得到第二響應消息,該第二響應消息也即為服務器對第二消息進行處理得到的回包消息,服務器直接對第二消息進行處理并返回。上述第二響應消息用于表示服務器已經(jīng)對第二消息進行處理,并且攜帶有第二序號,也即,第二響應消息通過第二序號進行唯一標識。
由于第二響應消息也攜帶用于標識第二消息的第二序號,因而客戶端可以唯一確認第二響應消息為服務器對第二消息進行處理得到的響應消息,從而確保了客戶端和服務器之間發(fā)送與接收的數(shù)據(jù)的一致性,進而有利于客戶端與服務器之間進行正常的數(shù)據(jù)通信。
該實施例在在從消息隊列中移除第一消息之后,向服務器發(fā)送第二消息和第二序號,其中,第二序號用于對第二消息進行標識;在向服務器發(fā)送第二消息之后,接收服務器發(fā)送的第二響應消息,其中,第二響應消息用于表示服務器已對第二消息進行處理,第二響應消息攜帶有第二序號,從而實現(xiàn)對消息的處理,由于通過給消息隊列中的消息添加唯一序號,接收到服務器發(fā)送的響應消息中自帶對應的序號,這樣客戶端在處理收到的響應消息便能對其唯一標識,從而保證了客戶端與服務器之間數(shù)據(jù)的一致性,達到了提高消息處理效率的技術(shù)效果。
作為一種可選的實施方式,在步驟s202從消息隊列中獲取第一消息之后,當?shù)谝幌⒌念愋蜑榈诙愋蜁r,向服務器發(fā)送第一消息和第一序號,并從消息隊列中移除第一消息;接收服務器發(fā)送的第一響應消息。
圖4是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖4所示,該方法還包括以下步驟:
步驟s401,當?shù)谝幌⒌念愋蜑榈诙愋蜁r,向服務器發(fā)送第一消息和第一序號,并從消息隊列中移除第一消息。
在本發(fā)明上述步驟s401提供的技術(shù)方案中,當?shù)谝幌⒌念愋蜑榈诙愋蜁r,向服務器發(fā)送第一消息和第一序號,并從消息隊列中移除第一消息。
消息的類型包括第一類型和第二類型。其中,第一類型可以為阻塞消息類型,第二類型可以為普通消息,在從消息隊列中獲取第一消息之后,判斷第一消息的類型。如果判斷出第一消息的類型為第二類型時,也即,第一消息為普通消息,則客戶端向服務器發(fā)送第一消息和用于對第一消息進行標識的第一序號,并且直接將第一消息從消息隊列中移除。
步驟s402,接收服務器發(fā)送的第一響應消息。
在本發(fā)明上述步驟s402提供的技術(shù)方案中,接收服務器發(fā)送的第一響應消息。
在向服務器發(fā)送第一消息和第一序號且將第一消息從消息隊列中直接移除之后,服務器對第一消息進行處理,得到第一響應消息??蛇x地,服務器在接收到對攜帶有第一消息和第一序號的請求之后,直接對該請求進行響應,得到第一響應消息。服務器在對第一消息進行處理得到第一響應消息之后,可以不對第一響應消息和第一序號進行緩存。
該實施例在從消息隊列中獲取第一消息之后,當?shù)谝幌⒌念愋蜑榈诙愋蜁r,向服務器發(fā)送第一消息和第一序號,并從消息隊列中移除第一消息;接收服務器發(fā)送的第一響應消息,從而實現(xiàn)客戶端與服務器之間數(shù)據(jù)的同步,提高了消息的處理效率。
作為一種可選的實施方式,在步驟s204向服務器發(fā)送第一消息和第一序號之后、且在步驟s206接收服務器發(fā)送的第一響應消息之前,接收到插入到消息隊列中的第三消息,其中,第三消息的類型為第一類型;在從消息隊列中移除第一消息之后,該消息處理方法還包括:向服務器發(fā)送第三消息和第三序號,其中,第三序號用于對第三消息進行標識,第三序號大于第一序號;接收服務器發(fā)送的用于表示服務器已對第三消息進行處理的第三響應消息;從消息隊列中移除第三消息。
圖5是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖5所示,該方法還包括以下步驟:
步驟s501,向服務器發(fā)送第三消息和第三序號。
在本發(fā)明上述步驟s501提供的技術(shù)方案中,向服務器發(fā)送第三消息和第三序號,其中,第三序號用于對第三消息進行標識,第三序號大于第一序號。
消息隊列中存儲的消息可以不斷地插入消息。在向服務器發(fā)送第一消息和第一序號之后、且在接收服務器發(fā)送的第一響應消息之前,接收到消息隊列中的第三消息,該第三消息在消息隊列中位于第一消息之后,也即,為被第一消息阻塞的消息。第三消息的類型與第一消息的類型相同,為阻塞消息類型,也即,在客戶端接收到服務器對第三消息進行響應的響應消息之前,在消息隊列中的第三消息之后的消息暫停發(fā)送,直到在客戶端接收到服務器對第三消息進行響應的響應消息之后,才可以發(fā)送消息隊列中的第三消息之后的消息,可以為在客戶端執(zhí)行更新操作下的更新類消息,比如,用于購買物品、領取獎勵等消息。
在客戶端接收到第一響應消息之后,客戶端從消息隊列中移除第一消息。在客戶端從消息隊列中移除第一消息之后,客戶端停止對消息隊列中的第三消息進行阻塞,客戶端向服務器發(fā)送上述第三消息和用于對第三消息進行標識的第三序號,該第三消息的第三序號大于第一消息的第一序號,也即,第三消息為新的阻塞消息??蛇x地,向客戶端發(fā)送用于請求服務器對第三消息進行處理的請求,該請求攜帶有第三消息和第三序號。
可選地,在客戶端向服務器發(fā)送第三消息時,賦予第三消息的序號為大于第一序號的第三序號。
步驟s502,接收服務器發(fā)送的第三響應消息。
在本發(fā)明上述步驟s502提供的技術(shù)方案中,接收服務器發(fā)送的第三響應消息,其中,第三響應消息用于表示服務器已對第三消息進行處理,第三響應消息攜帶有第三序號。
在向服務器發(fā)送第三消息和第三序號之后,服務器對第三消息進行處理,得到第三響應消息??蛇x地,服務器在接收到對攜帶有第三消息和第三序號的請求之后,對該請求進行響應,得到第三響應消息。上述第三響應消息用于表示服務器已經(jīng)對第三消息進行處理,并且攜帶有第三序號,也即,第三響應消息通過第三序號進行唯一標識。
由于第三響應消息也攜帶用于標識第三消息的第三序號,因而客戶端可以唯一確認第三響應消息為服務器對第三消息進行處理得到的響應消息,從而確保了客戶端和服務器之間發(fā)送與接收的數(shù)據(jù)的一致性,進而有利于客戶端與服務器之間進行正常的數(shù)據(jù)通信。
步驟s503,從消息隊列中移除第三消息。
在本發(fā)明上述步驟s503提供的技術(shù)方案中,從消息隊列中移除第三消息。
在接收服務器發(fā)送的第三響應消息之后,客戶端從消息隊列中移除第三消息,此時,該消息隊列中的第三消息之后的消息才可以發(fā)送。
該實施例通過在向服務器發(fā)送第一消息和第一序號之后、且在接收服務器發(fā)送的第一響應消息之前,接收到插入到消息隊列中的第三消息,其中,第三消息的類型為第一類型;在從消息隊列中移除第一消息之后,向服務器發(fā)送第三消息和第三序號,其中,第三序號用于對第三消息進行標識,第三序號大于第一序號;接收服務器發(fā)送的第三響應消息,其中,第三響應消息用于表示服務器已對第三消息進行處理,第三響應消息攜帶有第三序號;從消息隊列中移除第三消息,由于通過給消息隊列中的消息添加唯一序號,接收到服務器發(fā)送的響應消息中自帶對應的序號,這樣客戶端在處理收到的響應消息便能對其唯一標識,確保了客戶端與服務器之間數(shù)據(jù)的同步,保證了客戶端與服務器之間數(shù)據(jù)的一致性,達到了提高消息處理效率的技術(shù)效果。
作為一種可選的實施方式,在向服務器發(fā)送第一消息和第一序號之后、且在接收服務器發(fā)送的第一響應消息之前,接收到插入到消息隊列中的第四消息,其中,第四消息的類型為第一類型;在從消息隊列中移除第一消息之后,向服務器發(fā)送第四消息和第四序號,其中,第四序號用于對第四消息進行標識,第四序號等于第一序號;接收服務器發(fā)送的已經(jīng)緩存過的第一響應消息;從消息隊列中移除第四消息。
圖6是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖6所示,該方法還包括以下步驟:
步驟s601,向服務器發(fā)送第四消息和第四序號。
在本發(fā)明上述步驟s601提供的技術(shù)方案中,向服務器發(fā)送第四消息和第四序號,其中,第四序號用于對第四消息進行標識,第四序號等于第一序號。
在向服務器發(fā)送第一消息和第一序號之后、且在接收服務器發(fā)送的第一響應消息之前,接收到插入到消息隊列中的第四消息,該第二消息在消息隊列中位于第一消息之后。由于第一消息的類型為第一類型,也即,第一消息為阻塞消息,因而第四消息為被第一消息阻塞的消息。第四消息的類型為第一類型,也即,第四消息為阻塞消息。該第四消息可以為在客戶端執(zhí)行更新操作下的更新類消息,比如,用于購買物品、領取獎勵等消息。
在客戶端接收到第一響應消息之后,客戶端從消息隊列中移除第一消息。在客戶端從消息隊列中移除第一消息之后,客戶端停止對第四消息的阻塞,向服務器發(fā)送上述第四消息和用于對第四消息進行標識的第四序號。
步驟s602,接收服務器發(fā)送的已經(jīng)緩存過的第一響應消息。
在本發(fā)明上述步驟s602提供的技術(shù)方案中,接收服務器發(fā)送的已經(jīng)緩存過的第一響應消息。
在服務器對第一消息進行處理得到第一響應消息之后,服務器可以對第一響應消息和用于對第一消息進行標識的第一序號進行緩存。在向服務器發(fā)送第四消息和第四序號之后,服務器接收第四消息和第四序號。由于第四序號與第一序號相同,則第四消息為在斷線重聯(lián)之后,重新向服務器發(fā)送的第一消息,服務器在確定第四消息為在斷線重聯(lián)之后,重新向服務器發(fā)送的第一消息之后,不對第四消息進行處理,而是直接返回已經(jīng)緩存過的對第一消息進行處理得到的第一消息??蛻舳私邮辗掌靼l(fā)送的已經(jīng)緩存過的第一響應消息,從而避免了對重發(fā)的消息進行二次處理,提高了消息處理效率。
步驟s603,從消息隊列中移除第四消息。
在本發(fā)明上述步驟s603提供的技術(shù)方案中,從消息隊列中移除第四消息。
在接收服務器發(fā)送的第一響應消息之后,客戶端從消息隊列中移除第四消息,此時,該消息隊列中的第四消息之后的消息才可以發(fā)送。
該實施例在向服務器發(fā)送第一消息和第一序號之后、且在接收服務器發(fā)送的第一響應消息之前,接收到插入到消息隊列中的第四消息,第四消息的類型為第一類型;在從消息隊列中移除第一消息之后,向服務器發(fā)送第四消息和第四序號,第四序號用于對第四消息進行標識,第四序號等于第一序號;接收服務器發(fā)送的已經(jīng)緩存過的第一響應消息;從消息隊列中移除第四消息,從而提高了消息處理的效率。
可選地,當客戶端向服務器發(fā)送的消息的序號小于服務器緩存的消息的序號,則該消息為過期消息,服務器直接丟棄不做處理。
作為一種可選的實施方式,在向服務器發(fā)送第一消息和第一序號之后,判斷在向服務器發(fā)送第一消息和第一序號之后,未接收到第一響應消息的等待時間是否超過第一預設時間;在等待時間超過第一預設時間的情況下,顯示第一提示消息,第一提示消息用于提示繼續(xù)等待接收第一響應消息;當接收到第一響應消息時,關閉第一提示消息。
圖7是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖7所示,該方法還包括以下步驟:
步驟s701,判斷在向服務器發(fā)送第一消息和第一序號之后,未接收到第一響應消息的等待時間是否超過第一預設時間。
在本發(fā)明上述步驟s701提供的技術(shù)方案中,判斷在向服務器發(fā)送第一消息和第一序號之后,未接收到第一響應消息的等待時間是否超過第一預設時間。
在網(wǎng)絡環(huán)境不穩(wěn)定的情況下,會出現(xiàn)由于網(wǎng)絡延遲導致第一響應消息長時間未返回客戶端。為了在弱網(wǎng)環(huán)境下提高用戶體驗,需要基于當前網(wǎng)絡問題的嚴重程度給到用戶不同的提示反饋,在向服務器發(fā)送第一消息和第一序號之后,判斷在向服務器發(fā)送第一消息和第一序號之后,未接收到第一響應消息的等待時間是否超過第一預設時間。如果判斷出等待時間超過第一預設時間,則執(zhí)行步驟s702。
步驟s702,顯示第一提示消息。
在本發(fā)明上述步驟s702提供的技術(shù)方案中,如果判斷出等待時間超過第一預設時間,顯示第一提示消息,其中,第一提示消息用于提示繼續(xù)等待接收第一響應消息。
在判斷等待時間是否超過第一預設時間之后,如果判斷出等待時間超過第一預設時間,顯示第一提示消息,該第一提示消息為客戶端的輕度提示,比如,顯示“正在連接中……”的提示消息,用于提示用戶繼續(xù)等待接收第一響應消息。
步驟s703,當接收到第一響應消息時,關閉第一提示消息。
在本發(fā)明上述步驟s703提供的技術(shù)方案中,當接收到第一響應消息時,關閉第一提示消息。
在顯示第一提示消息之后,當接收到第一響應消息時,也即,在第一預設時間內(nèi)接收到第一響應消息,關閉第一提示消息,以盡可能地縮短用戶的等待時間。
可選地,第一響應消息在超過第一預設時間未返回客戶端可能是因為客戶端向服務器發(fā)送第一消息的過程中產(chǎn)生丟包情況,或者服務器在向客戶端返回第一響應消息的過程中產(chǎn)生丟包情況,該實施例將這種情況視為常態(tài)。
該實施例在向服務器發(fā)送第一消息和第一序號之后,判斷在向服務器發(fā)送第一消息和第一序號之后,未接收到第一響應消息的等待時間是否超過第一預設時間;如果判斷出等待時間超過第一預設時間,顯示第一提示消息,其中,第一提示消息用于提示繼續(xù)等待接收第一響應消息;當接收到第一響應消息時,關閉第一提示消息,從而根據(jù)網(wǎng)絡的真實情況,盡可能地縮短用戶的等待時間,提高數(shù)據(jù)處理效率。
作為一種可選的實施方式,在步驟s204,向服務器發(fā)送第一消息和第一序號之后,在與服務器斷開連接的情況下,自動發(fā)送與服務器重新建立連接的第一請求;顯示用于提示與服務器重新建立連接的第二提示消息。
圖8是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖8所示,該方法還包括以下步驟:
步驟s801,在與服務器斷開連接的情況下,自動發(fā)送與服務器重新建立連接的第一請求。
在本發(fā)明上述步驟s801提供的技術(shù)方案中,在與服務器斷開連接的情況下,自動發(fā)送與服務器重新建立連接的第一請求。
在向服務器發(fā)送第一消息和第一序號之后,在客戶端與服務器斷開連接的情況下,客戶端內(nèi)部會嘗試斷線重連,自動發(fā)送與服務器重新建立連接的第一請求,也即,客戶端進行自動修復。由于移動環(huán)境的不穩(wěn)定性,網(wǎng)絡在3g/4g和wifi來回切換是很常見的情況,因此該實施例將這種情況視為常態(tài)。
步驟s802,顯示第二提示信息。
在本發(fā)明上述步驟s802提供的技術(shù)方案中,顯示第二提示信息,其中,第二提示信息用于提示與服務器重新建立連接中。
在客戶端自動發(fā)送與服務器重新建立連接的第一請求之后,客戶端顯示第二提示消息,該第二提示消息為客戶端上的輕度提示,用于提示與服務器重新建立連接中,比如,在客戶端上顯示“重新建立連接中”。
該實施例在向服務器發(fā)送第一消息和第一序號之后,在與服務器斷開連接的情況下,自動發(fā)送與服務器重新建立連接的第一請求;顯示第二提示信息,其中,第二提示信息用于提示與服務器重新建立連接中,以盡可能地縮短用戶的等待時間,提高了消息的處理效率。
作為一種可選的實施方式,在步驟s204,向服務器發(fā)送第一消息和第一序號之后,在與服務器斷開連接的情況下,獲取自動與服務器重新建立連接的連接次數(shù);在連接次數(shù)大于預設連接次數(shù)的情況下,顯示第三提示信息,該第三提示信息用于提示與服務器無法建立連接。
圖9是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖9所示,該方法還包括以下步驟:
步驟s901,在與服務器斷開連接的情況下,獲取自動與服務器重新建立連接的連接次數(shù)。
在本發(fā)明上述步驟s901提供的技術(shù)方案中,在與服務器斷開連接的情況下,獲取自動與服務器重新建立連接的連接次數(shù)。
客戶端與服務器開始建立連接。在與服務器斷開連接的情況下,自動發(fā)送與服務器重新建立連接的第一請求,請求與服務器建立連接,也即,客戶端與服務器自動重連,獲取自動與服務器重新建立連接的連接次數(shù)。
步驟s902,判斷連接次數(shù)是否大于預設連接次數(shù)。
在本發(fā)明上述步驟s902提供的技術(shù)方案中,判斷連接次數(shù)是否大于預設連接次數(shù)。
在獲取自動與服務器重新建立連接的連接次數(shù)之后,判斷連接次數(shù)是否大于預設連接次數(shù)之后,判斷連接次數(shù)是否大于預設連接次數(shù),該預設連接次數(shù)為允許客戶端自動與服務器建立連接的最大重連次數(shù)。如果判斷出連接次數(shù)大于預設連接次數(shù),則執(zhí)行步驟s903。如果判斷出連接次數(shù)不大于預設連接次數(shù),則自動與服務器重新建立連接。
步驟s903,顯示第三提示信息。
在本發(fā)明上述步驟s903提供的技術(shù)方案中,如果判斷出連接次數(shù)大于預設連接次數(shù),顯示第三提示信息,其中,第三提示信息用于提示與服務器無法建立連接。
在判斷出連接次數(shù)是否大于預設連接次數(shù)之后,如果判斷出連接次數(shù)大于預設連接次數(shù)之后,則此時的網(wǎng)絡已經(jīng)無法完成自動修復,這時顯示第三提示消息,該第三提示消息為客戶端上的重度提示,用于提示客戶端與服務器無法建立連接,比如,在客戶端上顯示錯誤提示框“網(wǎng)絡異常,是否繼續(xù)嘗試連接”,詢問用戶是否重新與服務器建立連接,還是重新登錄客戶端。如果用戶對網(wǎng)絡進行了手動修復,比如,選擇了重新與服務器建立連接,可以避免退出到客戶端的登錄界面,再重新輸入帳號進行登錄的繁瑣步驟。
該實施例通過在向服務器發(fā)送第一消息和第一序號之后,在與服務器斷開連接的情況下,獲取自動與服務器重新建立連接的連接次數(shù);判斷連接次數(shù)是否大于預設連接次數(shù);如果判斷出連接次數(shù)大于預設連接次數(shù),顯示第三提示信息,其中,第三提示信息用于提示與服務器無法建立連接,從而明確網(wǎng)絡的真實情況,給用戶精確的反饋,提升用戶體驗,也避免了不必要的重連、重新登錄而導致的流量浪費的情況發(fā)生。
作為一種可選的實施方式,在顯示第三提示信息之后,接收第一操作信息,其中,第一操作信息用于觸發(fā)重新與服務器建立連接;或者接收第二操作信息,其中,第二操作信息用于指示通過重新登錄與服務器建立連接。
在顯示第三提示信息之后,客戶端接收第一操作信息,該第一操作信息可以對網(wǎng)絡進行手動修復的操作信息,比如,在顯示第三提示信息的界面接收用于重新與服務器建立連接的第一操作信息,從而觸發(fā)客戶端與服務器重新建立連接,可以避免退出到客戶端的登錄界面,再重新輸入帳號進行登錄的繁瑣步驟。
在顯示第三提示信息之后,客戶端接收第二操作信息,該第二操作信息可以用于指示通過重新登錄與服務器建立連接,從而只有在用戶手動選擇重新登錄時才會進行重新登錄的操作,大大降低了由于重登錄進行全量數(shù)據(jù)拉取而導致的流量耗費問題,提升了在網(wǎng)絡環(huán)境不穩(wěn)定的情況下的用戶體驗。
作為一種可選的實施方式,在向服務器發(fā)送第一消息和第一序號之前,從應用層連接的初始狀態(tài)進入連接狀態(tài);在與服務器建立連接失敗的情況下,進入等待狀態(tài);在與服務器成功建立連接的情況下,進入運行狀態(tài)。
圖10是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖10所示,該方法還包括以下步驟:
步驟s1001,從應用層連接的初始狀態(tài)進入連接狀態(tài)。
在本發(fā)明上述步驟s1001提供的技術(shù)方案中,從應用層連接的初始狀態(tài)進入連接狀態(tài),其中,連接狀態(tài)為在與服務器建立連接的狀態(tài)。
該實施例基于連接狀態(tài)機的狀態(tài)管理,狀態(tài)機用于描述對象內(nèi)部狀態(tài)行為和狀態(tài)間轉(zhuǎn)移的模型??蛻舳藢釉趥鬏斂刂茀f(xié)議(transmissioncontrol,簡稱為tcp)的鏈接基礎上,封裝了一個應用層連接connector,每個connector對應于一個域,比如,在游戲登錄場景、游戲大廳場景、游戲戰(zhàn)斗場景分別對應一個自己的connector。其中,tcp是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。需要說明的是,該實施例的connector的生命周期是無視底層tcp是否連接的,即使底層斷開又建立條新的連接,該connector也始終不變,每個connector具有一個連接狀態(tài)機。該狀態(tài)機的狀態(tài)包括初始狀態(tài)(start)、連接狀態(tài)(connecting)、運行狀態(tài)(running)、等待狀態(tài)(waiting)狀態(tài)和失敗狀態(tài)(fail)。
在向服務器發(fā)送第一消息和第一序號之前,從應用層連接的初始狀態(tài)進入連接狀態(tài),初始狀態(tài)是connector初始化時的狀態(tài)。當客戶端第一次進行連接時,會調(diào)用底層tcp連接,并進入connecting狀態(tài),該狀態(tài)不影響界面顯示。連接狀態(tài)用于表示著一次連接中或者重新連接中,取決于它的源狀態(tài)是初始狀態(tài)還是其它狀態(tài)。該狀態(tài)的作用是枚進入一次,會增加其重連次數(shù),用于后續(xù)狀態(tài)判斷是否達到最大的自動重連次數(shù)。當與服務器連接失敗或者重連失敗時,執(zhí)行步驟s1002。當與服務器連接成功時,執(zhí)行步驟s1003。
步驟s1002,在與服務器建立連接失敗的情況下,進入等待狀態(tài)。
在本發(fā)明上述步驟s1002提供的技術(shù)方案中,在與服務器建立連接失敗的情況下,進入等待狀態(tài),其中,等待狀態(tài)為用于指示網(wǎng)絡出現(xiàn)異常的狀態(tài)。
在從應用層連接的初始狀態(tài)進入連接狀態(tài)之后,在與服務器建立連接失敗的情況下,進入等待狀態(tài),該等待狀態(tài)用于標識當前網(wǎng)絡出現(xiàn)異常,并且將根據(jù)重連計數(shù)、連接結(jié)果等因素來判斷是否該嘗試下一次重連,如果嘗試進行下一次重連,則進入連接狀態(tài),如果已經(jīng)徹底無發(fā)與服務器建立連接了,或者已經(jīng)達到與服務器進行連接的最大次數(shù),則進入失敗狀態(tài)。
步驟s1003,在與服務器成功建立連接的情況下,進入運行狀態(tài)。
在本發(fā)明上述步驟s1003提供的技術(shù)方案中,在與服務器成功建立連接的情況下,進入運行狀態(tài),其中,運行狀態(tài)用于指示與服務器成功建立連接之后的狀態(tài)。
在從應用層連接的初始狀態(tài)進入連接狀態(tài)之后,在與服務器成功建立連接的情況下,進入運行狀態(tài),該運行狀態(tài)用于表示與服務器連接成功之后的狀態(tài)。在該運行狀態(tài)下,客戶端與服務器將進行正常通信。當與服務器連接超時或者與服務器連接斷開的情況下,進入等待狀態(tài)。
該在向服務器發(fā)送第一消息和第一序號之前,從應用層連接的初始狀態(tài)進入連接狀態(tài),其中,連接狀態(tài)為在與服務器建立連接的狀態(tài);在與服務器建立連接失敗的情況下,進入等待狀態(tài),其中,等待狀態(tài)為用于指示網(wǎng)絡出現(xiàn)異常的狀態(tài);在與服務器成功建立連接的情況下,進入運行狀態(tài),其中,運行狀態(tài)用于指示與服務器成功建立連接之后的狀態(tài),
作為一種可選的實施方式,在進入等待狀態(tài)之后,在與服務器重新建立連接的連接次數(shù)超過預設次數(shù)的情況下,進入連接狀態(tài);在連接次數(shù)超過預設次數(shù)的情況下,進入失敗狀態(tài)。
圖11是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖11所示,該方法還包括以下步驟:
步驟s1101,判斷與服務器重新建立連接的連接次數(shù)是否超過預設次數(shù)。
在本發(fā)明上述步驟s1101提供的技術(shù)方案中,判斷與服務器重新建立連接的連接次數(shù)是否超過預設次數(shù)。
等待狀態(tài)用于表示當前網(wǎng)絡出現(xiàn)異常。在進入等待狀態(tài)之后,判斷與服務器重新建立連接的連接次數(shù)是否超過預設次數(shù),該預設次數(shù)為允許客戶端與服務器建立連接的最大次數(shù)。如果判斷出與服務器重新建立連接的連接次數(shù)未超過預設次數(shù),執(zhí)行步驟s1102;如果判斷出與服務器重新建立連接的連接次數(shù)超過預設次數(shù),執(zhí)行步驟s1103。
步驟s1102,進入連接狀態(tài)。
在本發(fā)明上述步驟s1102提供的技術(shù)方案中,如果判斷出連接次數(shù)未超過預設次數(shù),進入連接狀態(tài)。
在判斷與服務器重新建立連接的連接次數(shù)是否超過預設次數(shù)之后,如果判斷出連接次數(shù)未超過預設次數(shù),也即,可以嘗試進行下一次與服務器建立連接,進入連接狀態(tài)。
步驟s1103,進入失敗狀態(tài)。
在本發(fā)明上述步驟s1103提供的技術(shù)方案中,如果判斷出連接次數(shù)超過預設次數(shù),進入失敗狀態(tài),其中,失敗狀態(tài)為用于指示無法與服務器建立連接的狀態(tài)。
在判斷與服務器重新建立連接的連接次數(shù)是否超過預設次數(shù)之后,如果判斷出連接次數(shù)超過預設次數(shù),則表明當前網(wǎng)絡已經(jīng)徹底無法連接了,進入失敗狀態(tài),該失敗狀態(tài)表明網(wǎng)絡條件已經(jīng)很差,并且無法在設置的最大重連次數(shù)下重連成功。一般的游戲在這種情況下無法正常進行,需要用戶手動修復網(wǎng)絡。在修復網(wǎng)絡指示,可以選擇強制斷開之前的連接并建立新連接,從而回到狀態(tài)機的初始狀態(tài)。
該實施例在進入等待狀態(tài)之后,判斷與服務器重新建立連接的連接次數(shù)是否超過預設次數(shù);如果判斷出連接次數(shù)未超過預設次數(shù),進入連接狀態(tài);如果判斷出連接次數(shù)超過預設次數(shù),進入失敗狀態(tài),其中,失敗狀態(tài)為用于指示無法與服務器建立連接的狀態(tài),實現(xiàn)了對網(wǎng)絡狀態(tài)的細分,以及狀態(tài)間轉(zhuǎn)移關系來給游戲玩家更精確的反饋,進而滿足日益增進的用戶需求。
作為一種可選的實施方式,在進入連接狀態(tài)或進入等待狀態(tài)時,顯示第二提示信息,其中,第二提示信息用于提示與服務器重新建立連接中;在進入失敗狀態(tài)時,顯示第三提示信息,其中,第三提示信息用于提示與服務器無法建立連接。
該實施例的客戶端可以選擇在不同狀態(tài)下對用戶進行不同程度的提示。比如,在連接狀態(tài)下、等待狀態(tài)下,采用用于提示與服務器重新建立連接的輕度提示,讓用戶稍作等待,這個過程中系統(tǒng)進行自動重連,待重連成功后關閉提示。而對于自動重連失敗的失敗狀態(tài),可以顯示出錯誤彈框,來告知用戶不宜再進行自動重連,可以嘗試手動修復網(wǎng)絡,待修復后可以手動選擇重連,從而給予用戶更精確的狀態(tài)反饋,提升了客戶端在弱網(wǎng)環(huán)境下的用戶體驗,并且節(jié)省流量。
根據(jù)本發(fā)明實施例,還提供了一種消息處理方法的實施例。
可選地,在本實施例中,上述消息處理方法可以應用于如圖1所示的由服務器102和終端104所構(gòu)成的硬件環(huán)境中。如圖1所示,服務器102通過網(wǎng)絡與終端104進行連接,上述網(wǎng)絡包括但不限于:廣域網(wǎng)、城域網(wǎng)或局域網(wǎng),終端104并不限定于pc、手機、平板電腦等。本發(fā)明實施例的消息處理方法可以由服務器102來執(zhí)行,也可以由終端104來執(zhí)行,還可以是由服務器102和終端104共同執(zhí)行。其中,終端104執(zhí)行本發(fā)明實施例的消息處理方法也可以是由安裝在其上的客戶端來執(zhí)行。
圖12是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖12所示,該方法還包括以下步驟:
步驟s1202,接收消息隊列中的第一消息和第一序號。
在本發(fā)明上述步驟s1202提供的技術(shù)方案中,接收消息隊列中的第一消息和第一序號,其中,消息隊列中存儲多條待發(fā)送消息,第一消息的類型為第一類型,第一序號用于對第一消息進行標識。
該實施例的消息隊列用于存儲客戶端向服務器待發(fā)的多條消息。在預設網(wǎng)絡環(huán)境下,服務器接收消息隊列中的第一消息和第一序號,該第一消息為插入消息隊列中的消息。該預設網(wǎng)絡環(huán)境可以為網(wǎng)絡環(huán)境不穩(wěn)定的網(wǎng)絡環(huán)境,比如,在2g/3g/4g網(wǎng)絡、wifi的頻繁切換的網(wǎng)絡環(huán)境下,可以為移動網(wǎng)絡的延遲和波動的網(wǎng)絡環(huán)境。
消息具有不同的類型,服務器接收第一類型的第一消息,該第一類型的消息在向客戶端發(fā)送時會阻塞消息隊列中位于該第一消息之后的消息,也即,在服務器對第一消息進行響應,并將響應消息發(fā)送至客戶端之前,暫停發(fā)送在消息隊列中的第一消息之后的消息,直到在客戶端接收到服務器對第一消息進行響應的響應消息之后,才可以發(fā)送消息隊列中的第一消息之后的消息,該第一類型的第一消息為阻塞消息。
第一消息的第一序號用于對第一消息進行標識,從而將第一消息與消息隊列中的其它消息區(qū)分開??蛇x地,服務器接收客戶端發(fā)送的用于請求服務器對第一消息進行處理的請求,該請求攜帶有第一消息和第一序號。服務器對該請求進行響應。
步驟s1204,對第一消息進行處理,得到第一響應消息。
在本發(fā)明上述步驟s1204提供的技術(shù)方案中,對第一消息進行處理,得到第一響應消息,其中,第一響應消息攜帶有第一序號。
在服務器接收消息隊列中的第一消息和第一序號之后,服務器對第一消息進行處理,得到第一響應消息??蛇x地,服務器在接收到第一消息和第一序號之后,判斷有沒有緩存過第一序號,如果服務器沒有緩存過第一序號,則該第一消息是第一次向服務器發(fā)送的消息,服務器對第一消息進行處理,得到第一響應消息;如果判斷出服務器緩存過第一序號,則該第一消息為在斷線重連之后,服務器重新接收到的消息,則服務器直接向客戶端發(fā)送之前已經(jīng)對第一消息進行處理得到的第一響應消息。
可選地,服務器在接收到對攜帶有第一消息和第一序號的請求之后,對該請求進行響應,得到第一響應消息,該第一響應消息也即為服務器對第一消息進行處理得到的回包消息。
上述響應消息用于表示服務器已經(jīng)對第一消息進行處理,并且攜帶有第一序號,也即,第一響應消息通過第一序號進行唯一標識。服務器在對第一消息進行處理得到第一響應消息之后,可以對第一響應消息和第一序號進行緩存,也可以通過與后續(xù)發(fā)送的消息對應的響應消息和對應的序號進行更新。
步驟s1206,向客戶端發(fā)送第一響應消息。
在本發(fā)明上述步驟s1206提供的技術(shù)方案中,向客戶端發(fā)送第一響應消息,其中,在客戶端接收到第一響應消息之后,第一消息移除了消息隊列。
在對第一消息進行處理,得到第一響應消息之后,服務器向客戶端發(fā)送第一響應消息,在客戶端接收到第一響應消息之后,第一消息移除了消息隊列。由于該第一響應消息也攜帶用于標識第一消息的第一序號,因而客戶端可以唯一確認第一響應消息為服務器對第一消息進行處理得到的響應消息,從而確保了客戶端和服務器之間發(fā)送與接收的數(shù)據(jù)的一致性,避免了由于網(wǎng)絡環(huán)境不穩(wěn)定而導致的客戶端與服務器間的數(shù)據(jù)不一致,進而有利于客戶端與服務器之間進行正常的數(shù)據(jù)通信。
通過上述步驟s1202至步驟s1206,在本發(fā)明實施例中,接收消息隊列中的第一消息和第一序號,其中,消息隊列中存儲多條待發(fā)送消息,第一消息的類型為第一類型,第一序號用于對第一消息進行標識;對第一消息進行處理,得到第一響應消息,其中,第一響應消息攜帶有第一序號;向客戶端發(fā)送第一響應消息,其中,在客戶端接收到第一響應消息之后,第一消息移除了消息隊列,由于通過給消息隊列中的消息添加唯一序號,接收到服務器發(fā)送的響應消息中自帶對應的序號,這樣客戶端在處理收到的響應消息便能對其唯一標識,從而保證客戶端與服務器之間數(shù)據(jù)的一致性,達到了提高消息處理效率的技術(shù)效果,進而解決了相關技術(shù)中對消息處理的效率低下的技術(shù)問題。
作為一種可選的實施方式,在發(fā)送第一響應消息之后,接收到插入到消息隊列中的第二消息和第二序號,其中,第二消息的類型為第二類型,第二序號用于對第二消息進行標識;對第二消息進行處理,得到第二響應消息,第二響應消息攜帶有第二序號;發(fā)送第二響應消息。
圖13是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖13所示,該方法還包括以下步驟:
步驟s1301,接收到插入到消息隊列中的第二消息和第二序號。
在本發(fā)明上述步驟s1301提供的技術(shù)方案中,接收到插入到消息隊列中的第二消息和第二序號,其中,第二消息的類型為第二類型,第二序號用于對第二消息進行標識。
消息隊列中存儲的消息可以不斷地插入消息。在服務器發(fā)送第一響應消息之后,接收到插入到消息隊列中的第二消息和第二序號。該第二消息在消息隊列中位于第一消息之后。由于第一消息的類型為第一類型,也即,第一消息為阻塞消息,因而第二消息為被第一消息在消息隊列中阻塞的消息。第二消息的類型與第一消息的類型不同,可以為消息的普通類型。該第二消息可以為在客戶端執(zhí)行查詢操作下的查詢類消息,比如,用于拉取玩家等級的消息。
第二消息的類型為消息的普通類型,可以通過預設序號進行標識。第二消息通過第二序號進行標識,第二序號為上述預設序號,比如,第二序號為0。
在客戶端從消息隊列中移除第一消息之后,服務器接收客戶端發(fā)送的第二消息和第二序號。可選地,服務器接收客戶端發(fā)送的用于請求服務器對第二消息進行處理的請求,該請求攜帶有第二消息和第二序號。
步驟s1302,對第二消息進行處理,得到第二響應消息。
在本發(fā)明上述步驟s1302提供的技術(shù)方案中,對第二消息進行處理,得到第二響應消息,其中,第二響應消息攜帶有第二序號。
在服務器接收到插入到消息隊列中的第二消息和第二序號之后,服務器對第二消息進行處理,得到第二響應消息。可選地,服務器在接收到對攜帶有第二消息和第二序號的請求之后,對該請求進行響應,得到第二響應消息,該第二響應消息也即為服務器對第二消息進行處理得到的回包消息,服務器直接對第二消息進行處理并返回。上述第二響應消息用于表示服務器已經(jīng)對第二消息進行處理,并且攜帶有第二序號,也即,第二響應消息通過第二序號進行唯一標識。
步驟s1303,發(fā)送第二響應消息。
在本發(fā)明上述步驟s1303提供的技術(shù)方案中,發(fā)送第二響應消息。
在服務器對第二消息進行處理,得到第二響應消息之后,服務器發(fā)送第二響應消息。由于第二響應消息也攜帶用于標識第二消息的第二序號,因而客戶端可以唯一確認第二響應消息為服務器對第二消息進行處理得到的響應消息,從而確保了客戶端和服務器之間發(fā)送與接收的數(shù)據(jù)的一致性,進而有利于客戶端與服務器之間進行正常的數(shù)據(jù)通信。
該實施例在發(fā)送第一響應消息之后,接收到插入到消息隊列中的第二消息和第二序號,其中,第二消息的類型為第二類型,第二序號用于對第二消息進行標識;對第二消息進行處理,得到第二響應消息,其中,第二響應消息攜帶有第二序號;發(fā)送第二響應消息,由于通過給消息隊列中的消息添加唯一序號,接收到服務器發(fā)送的響應消息中自帶對應的序號,這樣客戶端在處理收到的響應消息便能對其唯一標識,從而保證了客戶端與服務器之間數(shù)據(jù)的一致性,達到了提高消息處理效率的技術(shù)效果。
作為一種可選的實施方式,在發(fā)送第一響應消息之后,方法還包括:緩存第一序號和第一響應消息。
在發(fā)送第一響應消息之后,服務器緩存第一序號和第一響應消息,當下一次重新接收到第一消息時,可以直接返回緩存的第一響應消息,從而避免了對重現(xiàn)發(fā)送的消息進行二次處理,提高了消息處理效率。
作為一種可選的實施方式,在發(fā)送第一響應消息之后,接收到插入到消息隊列中的第三消息和第三序號,其中,第三消息的類型為第一類型,第三序號用于對第三消息進行標識;在第三序號大于第一序號的情況下,對第三消息進行處理,得到第三響應消息,其中,第三響應消息攜帶有第三序號;發(fā)送第三響應消息。
圖14是根據(jù)本發(fā)明實施例的另一種消息處理方法的流程圖。如圖14所示,該方法還包括以下步驟:
步驟s1401,接收到插入到消息隊列中的第三消息和第三序號。
在本發(fā)明上述步驟s1401提供的技術(shù)方案中,接收到插入到消息隊列中的第三消息和第三序號,其中,第三消息的類型為第一類型,第三序號用于對第三消息進行標識。
消息隊列中存儲的消息可以不斷地插入消息。在發(fā)送第一響應消息之后,接收到插入到消息隊列中的第三消息和第三序號,該第三消息在消息隊列中位于第一消息之后,也即,為被第一消息阻塞的消息。第三消息的類型與第一消息的類型相同,為阻塞消息類型。
在客戶端接收到第一響應消息之后,客戶端從消息隊列中移除第一消息。在客戶端從消息隊列中移除第一消息之后,客戶端停止對消息隊列中的第三消息進行阻塞,服務器接收客戶端發(fā)送的上述第三消息和用于對第三消息進行標識的第三序號。
步驟s1402,判斷第三序號是否大于第一序號。
在本發(fā)明上述步驟s1402提供的技術(shù)方案中,判斷第三序號是否大于第一序號。
在服務器接收到插入到消息隊列中的第三消息和第三序號之后,服務器判斷第三序號是否大于第一序號,如果判斷出第三序號大于第一序號,執(zhí)行步驟s1403。
步驟s1403,對第三消息進行處理,得到第三響應消息。
在本發(fā)明上述步驟s1403提供的技術(shù)方案中,如果出判斷第三序號大于第一序號,對第三消息進行處理,得到第三響應消息,其中,第三響應消息攜帶有第三序號。
在服務器判斷第三序號是否大于第一序號之后,如果出判斷第三序號大于第一序號,則第三消息為新的阻塞消息,服務器對第三消息進行處理,得到第三響應消息。可選地,服務器接收客戶端發(fā)送的用于請求服務器對第三消息進行處理的請求,該請求攜帶有第三消息和第三序號。
步驟s1404,發(fā)送第三響應消息。
在本發(fā)明上述步驟s1404提供的技術(shù)方案中,發(fā)送第三響應消息。
在服務器對第三消息進行處理,得到第三響應消息之后,服務器向客戶端發(fā)送第三響應消息。
該實施例通過在發(fā)送第一響應消息之后,接收到插入到消息隊列中的第三消息和第三序號,其中,第三消息的類型為第一類型,第三序號用于對第三消息進行標識;判斷第三序號是否大于第一序號;如果出判斷第三序號大于第一序號,對第三消息進行處理,得到第三響應消息,其中,第三響應消息攜帶有第三序號;發(fā)送第三響應消息,達到了提高消息處理效率的技術(shù)效果。
作為一種可選的實施方式,在發(fā)送第三響應消息之后,緩存第三序號和第三響應消息。
在服務器發(fā)送第三響應消息之后,服務器將原先緩存的第一序號更新為第三序號,將原先緩存的第一響應消息更新第三響應消息,從而實現(xiàn)對第三序號和第三響應消息的緩存。
作為一種可選的實施方式,在判斷第三序號是否大于第一序號之后,如果判斷出第三序號等于第一序號,發(fā)送第一響應消息。
在判斷第三序號是否大于第一序號之后,如果判斷出第三序號等于第一序號,則該第三消息是斷線重連后重發(fā)的消息,那么服務器不對它進行二次處理,而是直接返回緩存的第一響應消息,提高了數(shù)據(jù)處理效率。
可選地,如果服務器接收到的消息的序號小于上次緩存過的序號,則說明客戶端發(fā)送的消息為過期的消息,服務器直接丟棄不做任何處理。
需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術(shù)人員應該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領域技術(shù)人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
通過以上的實施方式的描述,本領域的技術(shù)人員可以清楚地了解到根據(jù)上述實施例的方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機,服務器,或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述的方法。
實施例2
下面結(jié)合優(yōu)選的實施例對本發(fā)明的技術(shù)方案進行說明。
該實施例的消息處理方法基于序號的消息機制,下面分別從客戶端側(cè)和從服務器側(cè)對本發(fā)明實施例的消息處理方法進行說明。
客戶端維護一個消息隊列,消息隊列中的每條消息可以分為兩種類型,包括:阻塞消息和普通消息。其中,阻塞消息在向服務器發(fā)送時會將消息隊列中該阻塞消息后面的消息阻塞掉,也即,在消息隊列中該阻塞消息之后的消息暫暫停發(fā)送,直到客戶端收到該阻塞消息對應的回包消息時才移除消息隊列,并繼續(xù)發(fā)送消息隊列中該阻塞消息之后的消息,在此過程中,客戶端會驅(qū)動消息阻塞界面提示;普通消息是在客戶端發(fā)送時會被直接移除消息隊列。
圖15是根據(jù)本發(fā)明實施例的一種基于客戶端的消息發(fā)送方法的交互流程圖。如圖15所示,該方法包括以下步驟:
步驟s1501,客戶端接收用戶的更新操作。
客戶端接收用戶的更新操作,該更新操作為購買物品、領取獎勵的操作等。
步驟s1502,客戶端在消息隊列中插入阻塞消息。
更新操作由于會帶來后臺數(shù)據(jù)的變化,因而更新操作產(chǎn)生的消息為阻塞消息。
在客戶端接收用戶的更新操作之后,客戶端在消息隊列中插入阻塞消息。
步驟s1503,在消息隊列中為阻塞消息賦予序號n。
對于阻塞消息,客戶端在發(fā)送時會賦予其唯一自增的序號,作為其在客戶端服務器之間的標識。在客戶端插入阻塞消息之后,在消息隊列中為阻塞消息賦予序號n。
步驟s1504,在消息隊列中向服務器發(fā)送阻塞消息和序號n。
客戶端在消息隊列中為阻塞消息賦予序號n之后,客戶端向服務器發(fā)送阻塞消息和序號n。
步驟s1505,客戶端啟動阻塞界面。
在客戶端向服務器發(fā)送阻塞消息和序號n之后,客戶端啟動阻塞界面,將消息隊列中該阻塞消息后面的消息阻塞掉。
步驟s1506,客戶端接收用戶的查詢操作。
普通消息可以為查詢類的請求,比如,普通消息可以為拉取玩家等級;而對于普通消息,序列號都賦為0。
步驟s1507,客戶端在消息隊列中插入普通消息。
在客戶端接收用戶的查詢操作之后,客戶端在消息隊列中插入普通消息,該普通消息為被阻塞消息阻塞的消息。
步驟s1508,通過消息隊列接收到服務器對阻塞消息的響應消息和序號n。
客戶端在消息隊列中插入普通消息之后,客戶端接收服務器對阻塞消息的響應消息和序號n。
步驟s1509,從消息隊列中移除阻塞消息。
在客戶端接收到服務器對阻塞消息的響應消息和序號n之后,客戶端從消息隊列中移除阻塞消息。
步驟s1510,客戶端停止阻塞界面。
在客戶端從消息隊列中移除阻塞消息之后,客戶端停止阻塞界面,可以繼續(xù)發(fā)送阻塞消息之后的消息。
步驟s1511,從消息隊列中向服務器發(fā)送被阻塞的普通消息。
在客戶端停止阻塞界面之后,客戶端向服務器發(fā)送被阻塞的普通消息。
步驟s1512,通過消息隊列接收服務器對普通消息的響應消息。
在客戶端向服務器發(fā)送被阻塞的普通消息之后,服務器對普通消息進行響應,得到普通消息的響應消息,并向客戶端發(fā)送。
該實施例通過客戶端接收用戶的更新操作,客戶端在消息隊列中插入阻塞消息,客戶端在消息隊列中為阻塞消息賦予序號n,客戶端向服務器發(fā)送阻塞消息和序號n,客戶端啟動阻塞界面,客戶端接收用戶的查詢操作,客戶端在消息隊列中插入普通消息,客戶端接收服務器對阻塞消息的響應消息和序號n,客戶端從消息隊列中移除阻塞消息,客戶端停止阻塞界面,客戶端向服務器發(fā)送被阻塞的普通消息,客戶端接收服務器對普通消息的響應消息,由于通過給消息隊列中的消息添加唯一序號,接收到服務器發(fā)送的響應消息中自帶對應的序號,這樣客戶端在處理收到的響應消息便能對其唯一標識,確保了客戶端與服務器之間數(shù)據(jù)的同步,保證了客戶端與服務器之間數(shù)據(jù)的一致性,達到了提高消息處理效率的技術(shù)效果,進而解決了相關技術(shù)中對消息處理的效率低下的技術(shù)問題。
服務器會記錄當前處理過消息中的最高序號,并且緩存最高序號對應的消息的回包內(nèi)容,其中,回包內(nèi)容可以為服務器對接收到的消息進行處理得到的響應消息。通過判斷每次接收到的消息的序號與上次緩存過的消息的序號的大小關系,確定向客戶端發(fā)送對接收到的消息的回包內(nèi)容。
圖16是根據(jù)本發(fā)明實施例的一種基于服務器的消息接收的流程圖。如圖16所示,該方法包括以下步驟:
步驟s1601,服務器緩存最高序號為seq_latest,對應的回包內(nèi)容為reply_latest。
消息隊列中的消息的序號為遞增序號,服務器記錄當前處理過消息中最高的序號seq_latest,并且緩存其回包內(nèi)容reply_latest。
步驟s1602,服務器接收序號為seq_new的新消息。
服務器接收序號為seq_new的新消息,可以接收攜帶該新消息的阻塞請求。
步驟s1603,服務器判斷seq_new與seq_latest的大小。
在服務器接收序號為seq_new的新消息之后,服務器判斷seq_new與seq_latest的大小,根據(jù)不同的判斷結(jié)果執(zhí)行步驟s1604至步驟s1607。
步驟s1604,在服務器判斷出seq_new大于seq_latest時,對新消息進行處理,并且更新seq_latest=seq_new,緩存服務器對新消息進行處理得到的新回包內(nèi)容reply_latest。
在服務器判斷出seq_new大于seq_latest時,則是服務器接收到的新的阻塞請求,那么服務器對其進行處理,并更新seq_latest為seq_new,更新reply_latest為該次處理的返回包reply_new。
步驟s1605,在服務器判斷出seq_new等于seq_latest時,與新消息相同的消息已經(jīng)被處理過,返回其緩存內(nèi)容reply_latest。
在服務器判斷出seq_new等于seq_latest時,則服務器接收到的是阻塞請求斷線重連后重發(fā)的包,服務器不對它進行二次處理,而是直接返回已經(jīng)緩存過的回包內(nèi)容reply_lates。
步驟s1606,在服務器判斷出seq_new小于seq_latest時,新消息為過期消息,不進行處理。
在服務器判斷出seq_new小于seq_latest時,則服務器接收到的消息為過期消息,服務器直接丟棄不做處理(其實在客戶端層的消息隊列已經(jīng)保證了不會產(chǎn)生這種情況)。
步驟s1607,在服務器判斷出seq_new=0時,新消息為普通消息,直接處理并返回,不更新seq_latest和reply_lates。
在服務器判斷出seq_new=0時,則新消息是普通消息,服務器直接對其進行處理并返回,不影響seq_latest和reply_latest。
該實施例的消息隊列中的消息的序號為自增序號,通過記錄當前處理過的消息中最高序號,以及服務器對最高序號對應的消息進行響應得到的回包內(nèi)容,判斷接收到的新消息的序號與緩存過的最高序號的大小關系,確定向客戶端發(fā)送對接收到的消息的回包消息,從而實現(xiàn)了服務器對消息的處理,保證了在網(wǎng)絡不穩(wěn)定的情況下,客戶端與服務器之間數(shù)據(jù)的一致性,提高了數(shù)據(jù)處理效率。
為了在弱網(wǎng)環(huán)境下提高游戲玩家的游戲體驗,需要基于當前網(wǎng)絡問題的嚴重程度給到用戶不同的提示反饋,該實施例提出了基于連接狀態(tài)機的狀態(tài)管理??蛻舳藢釉趖cp的鏈接基礎上,封裝了一層connector,每個connector表示著與服務器的一條長連接,比如,大廳建立一個connector,戰(zhàn)斗建立一個connector。該connector的生命周期是無視底層tcp連接的斷開與否的,即使底層斷開又建立一條新的連接,該connector始終不變。每個connector具有一個連接狀態(tài)機。
圖17是根據(jù)本發(fā)明實施例的一種客戶端的連接狀態(tài)機的示意圖。如圖17所示,連接狀態(tài)機的狀態(tài)包括:初始狀態(tài)(start)、連接狀態(tài)(connecting)、運行狀態(tài)(running)、等待狀態(tài)(waiting)和失敗狀態(tài)(fail)。
start狀態(tài):是connector初始化時的狀態(tài)。當?shù)谝淮芜M行連接時,會調(diào)用底層tcp的連接,并進入connecting狀態(tài),該狀態(tài)不影響ui顯示。
connecting狀態(tài):用于表示客戶端第一次連接中或者重新連接中,取決于它的源狀態(tài)是start還是其它。該狀態(tài)的作用是每進入一次,會增加其重連計數(shù),用于后續(xù)狀態(tài)判斷是否到達最大自動重連次數(shù)。當連接失敗或者重連失敗,都會進入waiting狀態(tài);連接成功將進入running狀態(tài)。
running狀態(tài):用于表示客戶端連接成功后的狀態(tài)。該狀態(tài)下客戶端與服務器將進行正常通信。當連接超時或者連接斷開時客戶端會進入waiting狀態(tài)。
waiting狀態(tài):用于表示網(wǎng)絡出現(xiàn)異常,并且該狀態(tài)將根據(jù)重連計數(shù)、連接結(jié)果等因素來判斷是否該嘗試下一次重連,如果嘗試下一次重連,那么進入connecting狀態(tài);如果已經(jīng)徹底無法建立連接了,或者已經(jīng)達到了最大重連次數(shù),則進入fail狀態(tài)。
fail狀態(tài):用于表示網(wǎng)絡條件很差,并且無法在設置的最大重連次數(shù)下重連成功。這種情況一般游戲無法繼續(xù)進行,需要用戶手動修復網(wǎng)絡,進行重連,進入connecting狀態(tài)。在修復網(wǎng)絡過后,可以選擇強制斷開之前的連接并建立新連接,從而回到start狀態(tài)。
該實施例的客戶端可以選擇在不同狀態(tài)下對用戶進行不同程度的提示,可以選擇在connecting狀態(tài)、waiting狀態(tài)下,采用輕度提示,讓用戶稍作等待,這個過程中系統(tǒng)進行自動重連,待重連成功后關閉提示。而對于自動重連失敗的fail狀態(tài),該實施例不宜再進行自動重連,而是彈出錯誤彈框,來告知用戶嘗試手動修復網(wǎng)絡,待修復后可以手動選擇重連來繼續(xù)游戲。
該實施例基于狀態(tài)細分以及狀態(tài)間轉(zhuǎn)移關系來給游戲玩家更精確的反饋,對每個連接細分了五個狀態(tài),并對其間的狀態(tài)轉(zhuǎn)移進行了建模,對狀態(tài)的更精確捕捉可以在網(wǎng)絡狀態(tài)切換時給到用戶更精確的反饋,進而提升了用戶體驗;同時,由于狀態(tài)機中可以明確區(qū)分網(wǎng)絡的真實情況,也避免了不必要的重連、重登陸導致的流量浪費問題。
實施例3
本發(fā)明實施例的應用環(huán)境可以但不限于參照上述實施例中的應用環(huán)境,本實施例中對此不再贅述。本發(fā)明實施例提供了用于實施上述消息處理方法的一種可選的具體應用。
手游同步機制在弱網(wǎng)下的表現(xiàn)可以由實現(xiàn)的連接狀態(tài)機所驅(qū)動。對于不同的網(wǎng)絡狀態(tài),該實施例根據(jù)其網(wǎng)絡問題的嚴重程度,給予不同的反饋。
圖18是根據(jù)本發(fā)明實施例的一種消息提示的界面示意圖。如圖18所示,為手游界面,可以由第一即時通訊應用登錄,也可以通過第二即時通訊應用登錄。由于網(wǎng)絡延遲導致數(shù)據(jù)包長時間未返回的情況,該實施例將其視為常態(tài),只是輕度提示用戶即可,比如,“正在聯(lián)絡指揮部…”。在數(shù)據(jù)包返回的同時關閉掉提示,以盡可能地縮短用戶的等待時間。
可選地,在網(wǎng)絡處于斷開連接的情況下,客戶端的內(nèi)部會嘗試斷線重連。由于移動環(huán)境的不穩(wěn)定性,網(wǎng)絡在3g/4g和wifi來回切換是很常見的情況,因此該實施例將這類情形也視為常態(tài),才采用輕度提示,這種情形下的提示界面也可以為圖18所示。
圖19是根據(jù)本發(fā)明實施例的另一種消息提示的界面示意圖。如圖19所示,在超過客戶端允許的最大自動重連次數(shù)后,說明此時的網(wǎng)絡已經(jīng)無法自動修復。這時才彈出重度提示,比如,錯誤提示框“網(wǎng)絡異常,是否繼續(xù)嘗試連接”,用戶可以操作“取消”按鈕以取消連接,或者操作“確定”按鈕以確定連接??蛇x地,詢問用戶是繼續(xù)重連還是返回重新登錄。如果用戶對網(wǎng)絡進行了手動修復,可以選擇“重連”來避免被踢出到登錄界面的繁瑣步驟。
實施例4
根據(jù)本發(fā)明實施例,還提供了一種用于實施上述消息處理方法的消息處理裝置。圖20是根據(jù)本發(fā)明實施例的一種消息處理裝置的示意圖。如圖20所示,該裝置可以包括:獲取單元10、發(fā)送單元20、接收單元30和移除單元40。
獲取單元10,用于從消息隊列中獲取第一消息,其中,消息隊列中存儲多條待發(fā)送消息。
發(fā)送單元20,用于當?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務器發(fā)送第一消息和第一序號,其中,第一序號用于對第一消息進行標識。
接收單元30,用于接收服務器發(fā)送的第一響應消息,其中,第一響應消息用于表示服務器已對第一消息進行處理,第一響應消息攜帶有第一序號。
移除單元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ā)送消息,第一消息的類型為第一類型,第一序號用于對第一消息進行標識。
處理單元60,用于對第一消息進行處理,得到第一響應消息,其中,第一響應消息攜帶有第一序號。
發(fā)送單元70,用于向客戶端發(fā)送第一響應消息,其中,在客戶端接收到第一響應消息之后,第一消息移除了消息隊列。
需要說明的是,該實施例中的接收單元50可以用于執(zhí)行本申請實施例1中的步驟s1202,該實施例中的處理單元60可以用于執(zhí)行本申請實施例1中的步驟s1204,該實施例中的發(fā)送單元70可以用于執(zhí)行本申請實施例1中的步驟s1206。
該實施例通過獲取單元10從消息隊列中獲取第一消息,其中,消息隊列中存儲多條待發(fā)送消息,通過發(fā)送單元20當?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務器發(fā)送第一消息和第一序號,其中,第一序號用于對第一消息進行標識,通過接收單元30接收服務器發(fā)送的第一響應消息,其中,第一響應消息用于表示服務器已對第一消息進行處理,第一響應消息攜帶有第一序號,通過移除單元40從消息隊列中移除第一消息,由于通過給消息隊列中的消息添加唯一序號,接收到服務器發(fā)送的響應消息中自帶對應的序號,這樣客戶端在處理收到的響應消息便能對其唯一標識,從而保證客戶端與服務器之間數(shù)據(jù)的一致性,達到了提高消息處理效率的技術(shù)效果,進而解決了相關技術(shù)中對消息處理的效率低下的技術(shù)問題。
此處需要說明的是,上述單元與對應的步驟所實現(xiàn)的示例和應用場景相同,但不限于上述實施例1所公開的內(nèi)容。需要說明的是,上述單元作為裝置的一部分可以運行在如圖1所示的硬件環(huán)境中,可以通過軟件實現(xiàn),也可以通過硬件實現(xiàn),其中,硬件環(huán)境包括網(wǎng)絡環(huán)境。
實施例5
根據(jù)本發(fā)明實施例,還提供了一種用于實施上述消息處理方法的服務器或終端。
圖22是根據(jù)本發(fā)明實施例的一種終端的結(jié)構(gòu)框圖。如圖22所示,該終端可以包括:一個或多個(圖中僅示出一個)處理器221、存儲器223、以及傳輸裝置225,如圖22所示,該終端還可以包括輸入輸出設備227。
其中,存儲器223可用于存儲軟件程序以及模塊,如本發(fā)明實施例中的消息處理方法和裝置對應的程序指令/模塊,處理器221通過運行存儲在存儲器223內(nèi)的軟件程序以及模塊,從而執(zhí)行各種功能應用以及數(shù)據(jù)處理,即實現(xiàn)上述的消息處理方法。存儲器223可包括高速隨機存儲器,還可以包括非易失性存儲器,如一個或者多個磁性存儲裝置、閃存、或者其他非易失性固態(tài)存儲器。在一些實例中,存儲器223可進一步包括相對于處理器221遠程設置的存儲器,這些遠程存儲器可以通過網(wǎng)絡連接至終端。上述網(wǎng)絡的實例包括但不限于互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、局域網(wǎng)、移動通信網(wǎng)及其組合。
上述的傳輸裝置225用于經(jīng)由一個網(wǎng)絡接收或者發(fā)送數(shù)據(jù),還可以用于處理器與存儲器之間的數(shù)據(jù)傳輸。上述的網(wǎng)絡具體實例可包括有線網(wǎng)絡及無線網(wǎng)絡。在一個實例中,傳輸裝置225包括一個網(wǎng)絡適配器(networkinterfacecontroller,nic),其可通過網(wǎng)線與其他網(wǎng)絡設備與路由器相連從而可與互聯(lián)網(wǎng)或局域網(wǎng)進行通訊。在一個實例中,傳輸裝置225為射頻(radiofrequency,rf)模塊,其用于通過無線方式與互聯(lián)網(wǎng)進行通訊。
其中,具體地,存儲器223用于存儲應用程序。
處理器221可以通過傳輸裝置225調(diào)用存儲器223存儲的應用程序,以執(zhí)行下述步驟:
從消息隊列中獲取第一消息,其中,消息隊列中存儲多條待發(fā)送消息;
當?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務器發(fā)送第一消息和第一序號,其中,第一序號用于對第一消息進行標識;
接收服務器發(fā)送的第一響應消息,其中,第一響應消息用于表示服務器已對第一消息進行處理,第一響應消息攜帶有第一序號;
從消息隊列中移除第一消息。
處理器221還用于執(zhí)行下述步驟:在向服務器發(fā)送第一消息和第一序號之后、且在接收服務器發(fā)送的第一響應消息之前,接收到插入到消息隊列中的第二消息,其中,第二消息的類型為第二類型;在從消息隊列中移除第一消息之后,向服務器發(fā)送第二消息。
處理器221還用于執(zhí)行下述步驟:在向服務器發(fā)送第二消息時,從消息隊列中移除第二消息。
處理器221還用于執(zhí)行下述步驟:向服務器發(fā)送第二消息和第二序號,其中,第二序號用于對第二消息進行標識;在向服務器發(fā)送第二消息之后,接收服務器發(fā)送的第二響應消息,其中,第二響應消息用于表示服務器已對第二消息進行處理,第二響應消息攜帶有第二序號。
處理器221還用于執(zhí)行下述步驟:在從消息隊列中獲取第一消息之后,當?shù)谝幌⒌念愋蜑榈诙愋蜁r,向服務器發(fā)送第一消息和第一序號,并從消息隊列中移除第一消息;接收服務器發(fā)送的第一響應消息。
處理器221還用于執(zhí)行下述步驟:在向服務器發(fā)送第一消息和第一序號之后、且在接收服務器發(fā)送的第一響應消息之前,接收到插入到消息隊列中的第三消息,其中,第三消息的類型為第一類型;在從消息隊列中移除第一消息之后,向服務器發(fā)送第三消息和第三序號,其中,第三序號用于對第三消息進行標識,第三序號大于第一序號;接收服務器發(fā)送的第三響應消息,其中,第三響應消息用于表示服務器已對第三消息進行處理,第三響應消息攜帶有第三序號;從消息隊列中移除第三消息。
處理器221還用于執(zhí)行下述步驟:在向服務器發(fā)送第一消息和第一序號之后、且在接收服務器發(fā)送的第一響應消息之前,接收到插入到消息隊列中的第四消息,其中,第四消息的類型為第一類型;在從消息隊列中移除第一消息之后,向服務器發(fā)送第四消息和第四序號,其中,第四序號用于對第四消息進行標識,第四序號等于第一序號;接收服務器發(fā)送的已經(jīng)緩存過的第一響應消息;從消息隊列中移除第四消息。
處理器221還用于執(zhí)行下述步驟:在向服務器發(fā)送第一消息和第一序號之后,判斷在向服務器發(fā)送第一消息和第一序號之后,未接收到第一響應消息的等待時間是否超過第一預設時間;如果判斷出等待時間超過第一預設時間,顯示第一提示消息,其中,第一提示消息用于提示繼續(xù)等待接收第一響應消息;當接收到第一響應消息時,關閉第一提示消息。
處理器221還用于執(zhí)行下述步驟:在向服務器發(fā)送第一消息和第一序號之后,在與服務器斷開連接的情況下,自動發(fā)送與服務器重新建立連接的第一請求;顯示第二提示信息,其中,第二提示信息用于提示與服務器重新建立連接中。
處理器221還用于執(zhí)行下述步驟:在向服務器發(fā)送第一消息和第一序號之后,在與服務器斷開連接的情況下,獲取自動與服務器重新建立連接的連接次數(shù);判斷連接次數(shù)是否大于預設連接次數(shù);如果判斷出連接次數(shù)大于預設連接次數(shù),顯示第三提示信息,其中,第三提示信息用于提示與服務器無法建立連接。
處理器221還用于執(zhí)行下述步驟:在顯示第三提示信息之后,接收第一操作信息,其中,第一操作信息用于觸發(fā)重新與服務器建立連接;或者接收第二操作信息,其中,第二操作信息用于指示通過重新登錄與服務器建立連接。
處理器221還用于執(zhí)行下述步驟:在向服務器發(fā)送第一消息和第一序號之前,從應用層連接的初始狀態(tài)進入連接狀態(tài),其中,連接狀態(tài)為在與服務器建立連接的狀態(tài);在與服務器建立連接失敗的情況下,進入等待狀態(tài),其中,等待狀態(tài)為用于指示網(wǎng)絡出現(xiàn)異常的狀態(tài);在與服務器成功建立連接的情況下,進入運行狀態(tài),其中,運行狀態(tài)用于指示與服務器成功建立連接之后的狀態(tài)。
處理器221還用于執(zhí)行下述步驟:在進入等待狀態(tài)之后,判斷與服務器重新建立連接的連接次數(shù)是否超過預設次數(shù);如果判斷出連接次數(shù)未超過預設次數(shù),進入連接狀態(tài);如果判斷出連接次數(shù)超過預設次數(shù),進入失敗狀態(tài),其中,失敗狀態(tài)為用于指示無法與服務器建立連接的狀態(tài)。
處理器221還用于執(zhí)行下述步驟:在進入連接狀態(tài)或進入等待狀態(tài)時,顯示第二提示信息,其中,第二提示信息用于提示與服務器重新建立連接中;在進入失敗狀態(tài)時,顯示第三提示信息,其中,第三提示信息用于提示與服務器無法建立連接。
可選地,處理器221還可以通過傳輸裝置225調(diào)用存儲器223存儲的應用程序,以執(zhí)行下述步驟:
接收消息隊列中的第一消息和第一序號,其中,消息隊列中存儲多條待發(fā)送消息,第一消息的類型為第一類型,第一序號用于對第一消息進行標識;
對第一消息進行處理,得到第一響應消息,其中,第一響應消息攜帶有第一序號;
向客戶端發(fā)送第一響應消息,其中,在客戶端接收到第一響應消息之后,第一消息移除了消息隊列。
處理器221還用于執(zhí)行下述步驟:在發(fā)送第一響應消息之后,方法還包括:接收到插入到消息隊列中的第二消息和第二序號,其中,第二消息的類型為第二類型,第二序號用于對第二消息進行標識;對第二消息進行處理,得到第二響應消息,其中,第二響應消息攜帶有第二序號;發(fā)送第二響應消息。
處理器221還用于執(zhí)行下述步驟:在發(fā)送第一響應消息之后,緩存第一序號和第一響應消息。
處理器221還用于執(zhí)行下述步驟:在發(fā)送第一響應消息之后,接收到插入到消息隊列中的第三消息和第三序號,其中,第三消息的類型為第一類型,第三序號用于對第三消息進行標識;判斷第三序號是否大于第一序號;如果出判斷第三序號大于第一序號,對第三消息進行處理,得到第三響應消息,其中,第三響應消息攜帶有第三序號;發(fā)送第三響應消息。
處理器221還用于執(zhí)行下述步驟:在發(fā)送第三響應消息之后,緩存第三序號和第三響應消息。
處理器221還用于執(zhí)行下述步驟:在判斷第三序號是否大于第一序號之后,如果判斷出第三序號等于第一序號,發(fā)送第一響應消息。
采用本發(fā)明實施例,提供了一種消息處理方案,從消息隊列中獲取第一消息,其中,消息隊列中存儲多條待發(fā)送消息;當?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務器發(fā)送第一消息和第一序號,其中,第一序號用于對第一消息進行標識;接收服務器發(fā)送的第一響應消息,其中,第一響應消息用于表示服務器已對第一消息進行處理,第一響應消息攜帶有第一序號;從消息隊列中移除第一消息,由于通過給消息隊列中的消息添加唯一序號,接收到服務器發(fā)送的響應消息中自帶對應的序號,這樣客戶端在處理收到的響應消息便能對其唯一標識,從而保證客戶端與服務器之間數(shù)據(jù)的一致性,達到了提高消息處理效率的技術(shù)效果,進而解決了相關技術(shù)中對消息處理的效率低下的技術(shù)問題。
可選地,本實施例中的具體示例可以參考上述實施例中所描述的示例,本實施例在此不再贅述。
本領域普通技術(shù)人員可以理解,圖22所示的結(jié)構(gòu)僅為示意,終端可以是智能手機(如android手機、ios手機等)、平板電腦、掌上電腦以及移動互聯(lián)網(wǎng)設備(mobileinternetdevices,mid)、pad等終端設備。圖22其并不對上述電子裝置的結(jié)構(gòu)造成限定。例如,終端還可包括比圖22中所示更多或者更少的組件(如網(wǎng)絡接口、顯示裝置等),或者具有與圖22所示不同的配置。
本領域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令終端設備相關的硬件來完成,該程序可以存儲于一計算機可讀存儲介質(zhì)中,存儲介質(zhì)可以包括:閃存盤、只讀存儲器(read-onlymemory,rom)、隨機存取器(randomaccessmemory,ram)、磁盤或光盤等。
實施例6
本發(fā)明的實施例還提供了一種存儲介質(zhì)。可選地,在本實施例中,上述存儲介質(zhì)可以用于執(zhí)行消息處理方法的程序代碼。
可選地,在本實施例中,上述存儲介質(zhì)可以位于上述實施例所示的網(wǎng)絡中的多個網(wǎng)絡設備中的至少一個網(wǎng)絡設備上。
可選地,在本實施例中,存儲介質(zhì)被設置為存儲用于執(zhí)行以下步驟的程序代碼:
從消息隊列中獲取第一消息,其中,消息隊列中存儲多條待發(fā)送消息;
當?shù)谝幌⒌念愋蜑榈谝活愋蜁r,向服務器發(fā)送第一消息和第一序號,其中,第一序號用于對第一消息進行標識;
接收服務器發(fā)送的第一響應消息,其中,第一響應消息用于表示服務器已對第一消息進行處理,第一響應消息攜帶有第一序號;
從消息隊列中移除第一消息。
可選地,存儲介質(zhì)還被設置為存儲用于執(zhí)行以下步驟的程序代碼:在向服務器發(fā)送第一消息和第一序號之后、且在接收服務器發(fā)送的第一響應消息之前,接收到插入到消息隊列中的第二消息,其中,第二消息的類型為第二類型;在從消息隊列中移除第一消息之后,向服務器發(fā)送第二消息。
可選地,存儲介質(zhì)還被設置為存儲用于執(zhí)行以下步驟的程序代碼:在向服務器發(fā)送第二消息時,從消息隊列中移除第二消息。
可選地,存儲介質(zhì)還被設置為存儲用于執(zhí)行以下步驟的程序代碼:向服務器發(fā)送第二消息和第二序號,其中,第二序號用于對第二消息進行標識;在向服務器發(fā)送第二消息之后,接收服務器發(fā)送的第二響應消息,其中,第二響應消息用于表示服務器已對第二消息進行處理,第二響應消息攜帶有第二序號。
可選地,存儲介質(zhì)還被設置為存儲用于執(zhí)行以下步驟的程序代碼:在從消息隊列中獲取第一消息之后,當?shù)谝幌⒌念愋蜑榈诙愋蜁r,向服務器發(fā)送第一消息和第一序號,并從消息隊列中移除第一消息;接收服務器發(fā)送的第一響應消息。
可選地,存儲介質(zhì)還被設置為存儲用于執(zhí)行以下步驟的程序代碼:在向服務器發(fā)送第一消息和第一序號之后、且在接收服務器發(fā)送的第一響應消息之前,接收到插入到消息隊列中的第三消息,其中,第三消息的類型為第一類型;在從消息隊列中移除第一消息之后,向服務器發(fā)送第三消息和第三序號,其中,第三序號用于對第三消息進行標識,第三序號大于第一序號;接收服務器發(fā)送的第三響應消息,其中,第三響應消息用于表示服務器已對第三消息進行處理,第三響應消息攜帶有第三序號;從消息隊列中移除第三消息。
可選地,存儲介質(zhì)還被設置為存儲用于執(zhí)行以下步驟的程序代碼:在向服務器發(fā)送第一消息和第一序號之后、且在接收服務器發(fā)送的第一響應消息之前,接收到插入到消息隊列中的第四消息,其中,第四消息的類型為第一類型;在從消息隊列中移除第一消息之后,向服務器發(fā)送第四消息和第四序號,其中,第四序號用于對第四消息進行標識,第四序號等于第一序號;接收服務器發(fā)送的已經(jīng)緩存過的第一響應消息;從消息隊列中移除第四消息。
可選地,存儲介質(zhì)還被設置為存儲用于執(zhí)行以下步驟的程序代碼:在向服務器發(fā)送第一消息和第一序號之后,判斷在向服務器發(fā)送第一消息和第一序號之后,未接收到第一響應消息的等待時間是否超過第一預設時間;如果判斷出等待時間超過第一預設時間,顯示第一提示消息,其中,第一提示消息用于提示繼續(xù)等待接收第一響應消息;當接收到第一響應消息時,關閉第一提示消息。
可選地,存儲介質(zhì)還被設置為存儲用于執(zhí)行以下步驟的程序代碼:在向服務器發(fā)送第一消息和第一序號之后,在與服務器斷開連接的情況下,自動發(fā)送與服務器重新建立連接的第一請求;顯示第二提示信息,其中,第二提示信息用于提示與服務器重新建立連接中。
可選地,存儲介質(zhì)還被設置為存儲用于執(zhí)行以下步驟的程序代碼:在向服務器發(fā)送第一消息和第一序號之后,在與服務器斷開連接的情況下,獲取自動與服務器重新建立連接的連接次數(shù);判斷連接次數(shù)是否大于預設連接次數(shù);如果判斷出連接次數(shù)大于預設連接次數(shù),顯示第三提示信息,其中,第三提示信息用于提示與服務器無法建立連接。
可選地,存儲介質(zhì)還被設置為存儲用于執(zhí)行以下步驟的程序代碼:在顯示第三提示信息之后,接收第一操作信息,其中,第一操作信息用于觸發(fā)重新與服務器建立連接;或者接收第二操作信息,其中,第二操作信息用于指示通過重新登錄與服務器建立連接。
可選地,存儲介質(zhì)還被設置為存儲用于執(zhí)行以下步驟的程序代碼:在向服務器發(fā)送第一消息和第一序號之前,從應用層連接的初始狀態(tài)進入連接狀態(tài),其中,連接狀態(tài)為在與服務器建立連接的狀態(tài);在與服務器建立連接失敗的情況下,進入等待狀態(tài),其中,等待狀態(tài)為用于指示網(wǎng)絡出現(xiàn)異常的狀態(tài);在與服務器成功建立連接的情況下,進入運行狀態(tài),其中,運行狀態(tài)用于指示與服務器成功建立連接之后的狀態(tài)。
可選地,存儲介質(zhì)還被設置為存儲用于執(zhí)行以下步驟的程序代碼:在進入等待狀態(tài)之后,判斷與服務器重新建立連接的連接次數(shù)是否超過預設次數(shù);如果判斷出連接次數(shù)未超過預設次數(shù),進入連接狀態(tài);如果判斷出連接次數(shù)超過預設次數(shù),進入失敗狀態(tài),其中,失敗狀態(tài)為用于指示無法與服務器建立連接的狀態(tài)。
可選地,存儲介質(zhì)還被設置為存儲用于執(zhí)行以下步驟的程序代碼:在進入連接狀態(tài)或進入等待狀態(tài)時,顯示第二提示信息,其中,第二提示信息用于提示與服務器重新建立連接中;在進入失敗狀態(tài)時,顯示第三提示信息,其中,第三提示信息用于提示與服務器無法建立連接。
可選地,在本實施例中,存儲介質(zhì)被設置為存儲用于執(zhí)行以下步驟的程序代碼:
接收消息隊列中的第一消息和第一序號,其中,消息隊列中存儲多條待發(fā)送消息,第一消息的類型為第一類型,第一序號用于對第一消息進行標識;
對第一消息進行處理,得到第一響應消息,其中,第一響應消息攜帶有第一序號;
向客戶端發(fā)送第一響應消息,其中,在客戶端接收到第一響應消息之后,第一消息移除了消息隊列。
在發(fā)送第一響應消息之后,方法還包括:接收到插入到消息隊列中的第二消息和第二序號,其中,第二消息的類型為第二類型,第二序號用于對第二消息進行標識;對第二消息進行處理,得到第二響應消息,其中,第二響應消息攜帶有第二序號;發(fā)送第二響應消息。
可選地,存儲介質(zhì)還被設置為存儲用于執(zhí)行以下步驟的程序代碼:在發(fā)送第一響應消息之后,緩存第一序號和第一響應消息。
可選地,存儲介質(zhì)還被設置為存儲用于執(zhí)行以下步驟的程序代碼:在發(fā)送第一響應消息之后,接收到插入到消息隊列中的第三消息和第三序號,其中,第三消息的類型為第一類型,第三序號用于對第三消息進行標識;判斷第三序號是否大于第一序號;如果出判斷第三序號大于第一序號,對第三消息進行處理,得到第三響應消息,其中,第三響應消息攜帶有第三序號;發(fā)送第三響應消息。
可選地,存儲介質(zhì)還被設置為存儲用于執(zhí)行以下步驟的程序代碼:在發(fā)送第三響應消息之后,緩存第三序號和第三響應消息。
可選地,存儲介質(zhì)還被設置為存儲用于執(zhí)行以下步驟的程序代碼:在判斷第三序號是否大于第一序號之后,如果判斷出第三序號等于第一序號,發(fā)送第一響應消息。
可選地,本實施例中的具體示例可以參考上述實施例中所描述的示例,本實施例在此不再贅述。
可選地,在本實施例中,上述存儲介質(zhì)可以包括但不限于:u盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
上述本發(fā)明實施例序號僅僅為了描述,不表示實施例的優(yōu)劣。
上述實施例中的集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在上述計算機可讀取的存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在存儲介質(zhì)中,包括若干指令用以使得一臺或多臺計算機設備(可為個人計算機、服務器或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。
在本發(fā)明的上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的客戶端,可通過其它的方式實現(xiàn)。其中,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡單元上。可以根據(jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術(shù)領域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。