專利名稱:更新數(shù)據(jù)的方法、服務(wù)器、客戶端及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,特別涉及一種更新數(shù)據(jù)的方法、服務(wù)器、客戶端及系統(tǒng)。
背景技術(shù):
現(xiàn)今的互聯(lián)網(wǎng)產(chǎn)品大都采用服務(wù)器加客戶端的組合,服務(wù)器處理數(shù)據(jù),客戶端將服務(wù)器的數(shù)據(jù)展現(xiàn)給用戶,可見數(shù)據(jù)是互聯(lián)網(wǎng)的核心。為了保證數(shù)據(jù)的安全,數(shù)據(jù)通常被保存在服務(wù)器上,客戶端需要及時更新數(shù)據(jù),與服務(wù)器的數(shù)據(jù)保持一致性?,F(xiàn)有技術(shù)中,有兩種方案可實現(xiàn)客戶端數(shù)據(jù)的更新。方案一是客戶端與服務(wù)器之間采用長連接模式,一旦服務(wù)器發(fā)生數(shù)據(jù)更新,服務(wù)器將通過長連接通道將更新數(shù)據(jù)發(fā)送給客戶端。方案二是采用輪詢機制,客戶端通過定時器定時詢問服務(wù)器是否有數(shù)據(jù)更新。在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下缺點:方案一中長連接對客戶端機器設(shè)備要求較高,無法保證所有聯(lián)網(wǎng)設(shè)備都具有長連接功能,導(dǎo)致有些客戶端無法進行數(shù)據(jù)更新,且服務(wù)器為維持長連接將需要更多資源消耗,減少服務(wù)器可承載的客戶端數(shù)量上限。方案二中如果服務(wù)器沒有數(shù)據(jù)更新,將產(chǎn)生很多無謂的數(shù)據(jù)通訊,增加服務(wù)器壓力,降低服務(wù)器可承載的客戶端數(shù)量,且定時器時間設(shè)置時間過長,將會產(chǎn)生數(shù)據(jù)無法及時更新的問題。
發(fā)明內(nèi)容
為了減少資源消耗,增加服務(wù)器可承載的客戶端數(shù)量,使客戶端及時高效地更新數(shù)據(jù),本發(fā)明實施例提供了一種更新數(shù)據(jù)的方法、設(shè)備及系統(tǒng)。所述技術(shù)方案如下:—方面,提供了一種更新數(shù)據(jù)的方法,所述方法包括:接收客戶端發(fā)送的通 訊請求,根據(jù)所述通訊請求產(chǎn)生響應(yīng)數(shù)據(jù),并獲取通訊前產(chǎn)生的更新數(shù)據(jù);將所述響應(yīng)數(shù)據(jù)與所述更新數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中,并將所述通訊數(shù)據(jù)包發(fā)送給所述客戶端,使所述客戶端根據(jù)所述通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新。進一步地,所述將所述響應(yīng)數(shù)據(jù)與所述更新數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中之前,還包括:將通訊前產(chǎn)生的更新數(shù)據(jù)存儲在與所述客戶端相對應(yīng)的緩存中;所述獲取通訊前產(chǎn)生的更新數(shù)據(jù),包括:從所述緩存中獲取存儲的更新數(shù)據(jù)。其中,所述緩存包括數(shù)據(jù)位和更新標志位,所述數(shù)據(jù)位用于緩存更新數(shù)據(jù),所述更新標志位用于標識所述緩存中是否有更新數(shù)據(jù);所述從所述緩存中獲取存儲的更新數(shù)據(jù),包括:根據(jù)所述更新標志位判斷所述緩存中是否存儲有更新數(shù)據(jù),如果是,則從所述緩存中獲取存儲的更新數(shù)據(jù)。優(yōu)選地,所述將所述響應(yīng)數(shù)據(jù)與所述更新數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中時,還包括:在所述通訊數(shù)據(jù)包中添加數(shù)據(jù)總長度標識及響應(yīng)數(shù)據(jù)長度標識,使所述客戶端根據(jù)所述通訊數(shù)據(jù)包中的數(shù)據(jù)總長度標識及響應(yīng)數(shù)據(jù)長度標識判斷所述通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù),如果是,則根據(jù)所述通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新??蛇x地,所述將所述響應(yīng)數(shù)據(jù)與所述更新數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中時,還包括:在所述通訊數(shù)據(jù)包中添加更新標志,使所述客戶端根據(jù)所述通訊數(shù)據(jù)包中添加的更新標志判斷所述通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù),如果是,則根據(jù)所述通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新。另一方面,還提供了一種服務(wù)器,所述服務(wù)器包括:接收模塊,用于接收客戶端發(fā)送的通訊請求;響應(yīng)模塊,用于根據(jù)所述接收模塊接收到的通訊請求產(chǎn)生響應(yīng)數(shù)據(jù);獲取模塊,用于獲取通訊前產(chǎn)生的更新數(shù)據(jù);添加模塊,用于將所述響應(yīng)模塊產(chǎn)生的響應(yīng)數(shù)據(jù)與所述獲取模塊獲取到的更新數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中;發(fā)送模塊,用于將所述添加模塊添加后的通訊數(shù)據(jù)包發(fā)送給所述客戶端,使所述客戶端根據(jù)所述通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新。進一步地,所述服務(wù)器還包括:存儲模塊,用于將通訊前產(chǎn)生的更新數(shù)據(jù)存儲在與所述客戶端相對應(yīng)的緩存中;
所述獲取模塊,用于從所述緩存中獲取所述存儲模塊存儲的更新數(shù)據(jù)。其中,所述緩存包括數(shù)據(jù)位和更新標志位,所述數(shù)據(jù)位用于緩存更新數(shù)據(jù),所述更新標志位用于標識所述緩存中是否有更新數(shù)據(jù);所述獲取模塊,用于根據(jù)所述更新標志位判斷所述緩存中是否有更新數(shù)據(jù),如果是,則從所述緩存中獲取所述更新數(shù)據(jù)。優(yōu)選地,所述添加模塊,還用于在所述通訊數(shù)據(jù)包中添加數(shù)據(jù)總長度標識及響應(yīng)數(shù)據(jù)長度標識,使所述客戶端根據(jù)所述通訊數(shù)據(jù)包中的數(shù)據(jù)總長度標識及響應(yīng)數(shù)據(jù)長度標識判斷所述通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù),如果是,則根據(jù)所述通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新。可選地,所述添加模塊,還用于在所述通訊數(shù)據(jù)包中添加更新標志,使所述客戶端根據(jù)所述通訊數(shù)據(jù)包中添加的更新標志判斷所述通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù),如果是,則根據(jù)所述通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新。再一方面,還提供了一種客戶端,所述客戶端包括:發(fā)送模塊,用于向服務(wù)器發(fā)送通訊請求;接收模塊,用于接收所述服務(wù)器發(fā)送的添加了響應(yīng)數(shù)據(jù)及更新數(shù)據(jù)的通訊數(shù)據(jù)包,所述通訊響應(yīng)數(shù)據(jù)為所述服務(wù)器根據(jù)所述發(fā)送模塊發(fā)送的通訊請求產(chǎn)生的通訊響應(yīng)數(shù)據(jù),所述更新數(shù)據(jù)為所述服務(wù)器在通訊前產(chǎn)生的更新數(shù)據(jù);更新模塊,用于根據(jù)所述接收模塊接收到的通訊數(shù)據(jù)包中添加的更新數(shù)據(jù)進行數(shù)據(jù)更新。優(yōu)選地,所述通訊數(shù)據(jù)包中還添加了數(shù)據(jù)總長度標識及響應(yīng)數(shù)據(jù)長度標識;
所述更新模塊,用于根據(jù)所述接收模塊接收到的通訊數(shù)據(jù)包中添加的數(shù)據(jù)總長度標識及響應(yīng)數(shù)據(jù)長度標識判斷所述通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù),如果是,則根據(jù)所述通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新??蛇x地,所述通訊數(shù)據(jù)包中還添加了更新標志;所述更新模塊,用于根據(jù)所述接收模塊接收到的通訊數(shù)據(jù)包中添加的更新標志判斷所述通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù),如果是,則根據(jù)所述通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新。又一方面,還提供了一種更新數(shù)據(jù)的系統(tǒng),所述系統(tǒng)包括:如上所述的服務(wù)器,以及如上所述的客戶端。本發(fā)明實施例提供的技術(shù)方案的有益效果是:通過將通訊前產(chǎn)生的更新數(shù)據(jù)與通訊時產(chǎn)生的響應(yīng)數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中發(fā)送給客戶端,不僅減少單獨發(fā)送更新數(shù)據(jù)時占用的資源,還可減少資源損耗,從而增加服務(wù)器可承載的客戶端數(shù)量;同時,通過任何一次與客戶端的連接,將更新數(shù)據(jù)添加在通訊數(shù)據(jù)包中發(fā)送給客戶端的操作是基于事件機制的,避免采用輪詢而產(chǎn)生的通訊壓力,進而可使客戶端及時高效地更新數(shù)據(jù)。
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是本發(fā)明實施例一提供的一種更新數(shù)據(jù)的方法流程圖;圖2是本發(fā)明實施例二提供的一種更新數(shù)據(jù)的方法流程圖;圖3是本發(fā)明實施例三提供的一種服務(wù)器的結(jié)構(gòu)示意圖;圖4是本發(fā)明實施例三提供的另一種服務(wù)器的結(jié)構(gòu)示意圖;圖5是本發(fā)明實施例四提供的一種客戶端的結(jié)構(gòu)示意圖;圖6是本發(fā)明實施例五提供的一種更新數(shù)據(jù)系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。實施例一參見圖1,本實施例提供了一種更新數(shù)據(jù)的方法,該方法流程具體如下:101:接收客戶端發(fā)送的通訊請求,根據(jù)通訊請求產(chǎn)生響應(yīng)數(shù)據(jù),并獲取通訊前產(chǎn)生的更新數(shù)據(jù)。102:將響應(yīng)數(shù)據(jù)與更新數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中,并將通訊數(shù)據(jù)包發(fā)送給客戶端,使客戶端根據(jù)通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新。進一步地,將響應(yīng)數(shù)據(jù)與更新數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中之前,還包括:將通訊前產(chǎn)生的更新數(shù) 據(jù)存儲在與客戶端相對應(yīng)的緩存中;
獲取通訊前產(chǎn)生的更新數(shù)據(jù),包括:從緩存中獲取存儲的更新數(shù)據(jù)。其中,緩存包括數(shù)據(jù)位和更新標志位,數(shù)據(jù)位用于緩存更新數(shù)據(jù),更新標志位用于標識緩存中是否有更新數(shù)據(jù);從緩存中獲取存儲的更新數(shù)據(jù),包括:根據(jù)更新標志位判斷緩存中是否存儲有更新數(shù)據(jù),如果是,則從緩存中獲取存儲的更新數(shù)據(jù)。優(yōu)選地,將響應(yīng)數(shù)據(jù)與更新數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中時,還包括:在通訊數(shù)據(jù)包中添加數(shù)據(jù)總長度標識及響應(yīng)數(shù)據(jù)長度標識,使客戶端根據(jù)通訊數(shù)據(jù)包中的數(shù)據(jù)總長度標識及響應(yīng)數(shù)據(jù)長度標識判斷通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù),如果是,則根據(jù)通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新??蛇x地,將響應(yīng)數(shù)據(jù)與更新數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中時,還包括:在通訊數(shù)據(jù)包中添加更新標志,使客戶端根據(jù)通訊數(shù)據(jù)包中添加的更新標志判斷通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù),如果是,則根據(jù)通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新。本實施例提供的方法,通過將通訊前產(chǎn)生的更新數(shù)據(jù)與通訊時產(chǎn)生的響應(yīng)數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中發(fā)送給客戶端,不僅減少單獨發(fā)送更新數(shù)據(jù)時占用的資源,還可減少資源損耗,從而增加服務(wù)器可承載的客戶端數(shù)量;同時,通過任何一次與客戶端的連接,將更新數(shù)據(jù)添加在通訊數(shù)據(jù)包中發(fā)送給客戶端的操作是基于事件機制的,避免采用輪詢而產(chǎn)生的通訊壓力,進而可使客戶端及時高效地更新數(shù)據(jù)。實施例二本實施例提供了一種更新數(shù)據(jù)的方法,該方法通過服務(wù)器將每次產(chǎn)生的更新數(shù)據(jù)存儲在與客戶端相對應(yīng)的緩存中,并在與客戶端進行通訊時,將更新數(shù)據(jù)添加在通訊數(shù)據(jù)包中推送給客戶端,從而在減少資源消耗的同時,使客戶端能夠及時高效的更新數(shù)據(jù)。其中,與客戶端相對應(yīng)的緩存為服務(wù)器的緩存,為了便于說明,本實施例以緩存包括數(shù)據(jù)位和更新標志位為例,對本實施例提供的方法進行詳細說明。參見圖2,該方法流程具體如下:201:服務(wù)器產(chǎn)生更新數(shù)據(jù),并判斷與客戶端相對應(yīng)的緩存中是否有已存的更新數(shù)據(jù),若是,執(zhí)行202,否則執(zhí)行203。具體地,本實施例不對服務(wù)器產(chǎn)生的具體更新數(shù)據(jù)進行限定,實際應(yīng)用中,客戶端向服務(wù)器提出應(yīng)用程序請求,在程序運行過程中,服務(wù)器可根據(jù)客戶端的操作所對應(yīng)的算法對客戶端的現(xiàn)有數(shù)據(jù)進行處理,處理后所得的數(shù)據(jù)即為更新數(shù)據(jù)。例如,游戲中A玩家與B玩家比賽,服務(wù)器根據(jù)比賽情況對客戶端現(xiàn)有的數(shù)據(jù)(如生命值、裝備等)進行處理,處理后所得的數(shù)據(jù)即為更新數(shù)據(jù)。其中,緩存是服務(wù)器用于暫存服務(wù)器將要發(fā)送的數(shù)據(jù)的區(qū)域。服務(wù)器為每個客戶端建立對應(yīng)的緩存,存放將要發(fā)送給對應(yīng)客戶端的更新數(shù)據(jù)。服務(wù)器根據(jù)客戶端的唯一 ID標識并識別與客戶端相對應(yīng)的緩存。其中,緩存包括數(shù)據(jù)位和更新標志位,數(shù)據(jù)位用于緩存服務(wù)器根據(jù)客戶端的操作產(chǎn)生的更新數(shù)據(jù),更新標志位用于標識緩存中有無更新數(shù)據(jù)。例如,將更新標志位設(shè)置為空,用于標識緩存中沒有更新數(shù) 據(jù),將更新標志位設(shè)置為非空,用于標識緩存中有更新數(shù)據(jù),或者將更新標志位的值設(shè)置為O,用于標識緩存中沒有更新數(shù)據(jù),將更新標志位的值設(shè)置為I,用于標識緩存中有更新數(shù)據(jù),或是采用其他方式來通過更新標志位標識緩存中是否有更新數(shù)據(jù),本實施例不對更新標志位標識緩存中是否有更新數(shù)據(jù)的方式進行限定。由于服務(wù)器對數(shù)據(jù)的處理速度是不同的,因此,在一次短連接之前,服務(wù)器可能進行一次至多次數(shù)據(jù)更新。在服務(wù)器將此次更新數(shù)據(jù)存入緩存之前,服務(wù)器需判斷緩存中是否有已存的更新數(shù)據(jù)。具體判斷時,可根據(jù)緩存的更新標志位來判斷緩存中是否存儲有更新數(shù)據(jù),若緩存中有已存的更新數(shù)據(jù),則執(zhí)行步驟202;若緩存中無已存的更新數(shù)據(jù),則執(zhí)行步驟203。202:將此次更新數(shù)據(jù)存儲在緩存中的數(shù)據(jù)位,執(zhí)行204。針對該步驟,由于緩存中有已存的更新數(shù)據(jù),則此時緩存中的更新標志位已標識出緩存中有更新數(shù)據(jù),因此,服務(wù)器僅將此次更新數(shù)據(jù)與緩存中已存的更新數(shù)據(jù)合并即可,而無需再更改更新標志位。另外,由于現(xiàn)有技術(shù)中將數(shù)據(jù)存儲到緩存中的方法十分成熟,本發(fā)明實施例對將更新數(shù)據(jù)存儲在緩存中的方式不再贅述。203:將此次更新數(shù)據(jù)存儲在緩存中的數(shù)據(jù)位,更改更新標志位。針對該步驟,由于緩存中無已存的更新數(shù)據(jù),則此時緩存中的更新標志位標識出緩存中無更新數(shù)據(jù),因此,服務(wù)器將此次更新數(shù)據(jù)存儲在緩存中的數(shù)據(jù)位之后,需要更改更新標志位,以通過該更新標志位標識緩存中有更新數(shù)據(jù)。204:服務(wù)器接收客戶端發(fā)送的通訊請求,根據(jù)該通訊請求產(chǎn)生響應(yīng)數(shù)據(jù),并從緩存中獲取通訊前產(chǎn)生的更新數(shù)據(jù)。具體地,服務(wù)器與客戶端進行通訊時,服務(wù)器會產(chǎn)生本次通訊的響應(yīng)數(shù)據(jù),該響應(yīng)數(shù)據(jù)可以是客戶端向服務(wù)器發(fā)出通訊請求,服務(wù)器對該通訊請求進行處理后產(chǎn)生的響應(yīng)數(shù)據(jù)。為了節(jié)省服務(wù)器單獨發(fā)送更新數(shù)據(jù)所占用的資源,服務(wù)器將通訊前產(chǎn)生的更新數(shù)據(jù)先存入緩存中,因此,服務(wù)器接收 到客戶端發(fā)送的通訊請求時,除了根據(jù)通訊請求產(chǎn)生響應(yīng)數(shù)據(jù),還可從緩存中獲取通訊前產(chǎn)生的更新數(shù)據(jù),以便后續(xù)能夠?qū)⒏聰?shù)據(jù)和響應(yīng)數(shù)據(jù)一起添加在通訊數(shù)據(jù)包中發(fā)送給客戶端。205:服務(wù)器將響應(yīng)數(shù)據(jù)與更新數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中,并將該通訊數(shù)據(jù)包發(fā)送給客戶端。其中,將響應(yīng)數(shù)據(jù)和更新數(shù)據(jù)添加在通訊數(shù)據(jù)包中時,可將響應(yīng)數(shù)據(jù)和更新數(shù)據(jù)順序?qū)懭胪ㄓ崝?shù)據(jù)包的數(shù)據(jù)位,當然,還可以采用其他添加方式,本實施例不對將響應(yīng)數(shù)據(jù)和更新數(shù)據(jù)添加在通訊數(shù)據(jù)包中的方式進行限定。進一步地,為了使客戶端明確該通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù),服務(wù)器將響應(yīng)數(shù)據(jù)和更新數(shù)據(jù)添加在通訊數(shù)據(jù)包中時,還可以在通訊數(shù)據(jù)包中添加數(shù)據(jù)總長度標識和響應(yīng)數(shù)據(jù)長度標識,使客戶端根據(jù)數(shù)據(jù)總長度標識和響應(yīng)數(shù)據(jù)長度標識判斷通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù)。除此之外,還可在該通訊數(shù)據(jù)包中添加更新標識,使客戶端根據(jù)該更新標志判斷通訊數(shù)據(jù)包中有無更新數(shù)據(jù)。而更新標志標識通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù)時,可以有多種標識方式,例如,如果通訊數(shù)據(jù)包中添加的更新標志為空,則標識該通訊數(shù)據(jù)包中未添加更新數(shù)據(jù),如果通訊數(shù)據(jù)包中添加的更新標志為非空,則標識該通訊數(shù)據(jù)包中添加了更新數(shù)據(jù),或者,如果通訊數(shù)據(jù)包中添加的更新標志為1,則標識通訊數(shù)據(jù)包中添加了更新數(shù)據(jù),如果通訊數(shù)據(jù)包中添加的更新標志為O,則標識通訊數(shù)據(jù)包中未添加更新數(shù)據(jù)。當然,還可以采用其他方式,本實施例不對更新標志標識通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù)的方式進行限定。無論采用哪種方式來標識通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù),當服務(wù)器將響應(yīng)數(shù)據(jù)和更新數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中之后,可以通過建立短連接的方式來將其發(fā)送給客戶端。短連接是指通訊雙方有數(shù)據(jù)交互時建立一個連接,數(shù)據(jù)發(fā)送完成后斷開此連接,即每次連接僅完成一項業(yè)務(wù)的發(fā)送。則在服務(wù)器與客戶端建立短連接后,服務(wù)器通過相關(guān)傳輸協(xié)議將封裝好的通訊數(shù)據(jù)包發(fā)送給客戶端,待通訊數(shù)據(jù)包傳送完成后斷開連接,由此可減少單獨發(fā)送更新數(shù)據(jù)所占用的資源。206:客戶端判斷通訊數(shù)據(jù)包中是否有更新數(shù)據(jù),若是執(zhí)行207,否則執(zhí)行208。針對該步驟,如果在上述步驟205中,服務(wù)器在通訊數(shù)據(jù)包中添加了數(shù)據(jù)總長度標識和響應(yīng)數(shù)據(jù)長度標識,則客戶端可將通訊數(shù)據(jù)包中的數(shù)據(jù)總長度標識所標識的數(shù)據(jù)總長度和響應(yīng)數(shù)據(jù)長度標識所標識的響應(yīng)數(shù)據(jù)長度進行比較,若數(shù)據(jù)總長度等于響應(yīng)數(shù)據(jù)長度,則標識該通訊數(shù)據(jù)包中未添加更新數(shù)據(jù),若數(shù)據(jù)總長度大于響應(yīng)數(shù)據(jù)長度,則標識該通訊數(shù)據(jù)包中添加了更新數(shù)據(jù)。如果在上述步驟205中,服務(wù)器在通訊數(shù)據(jù)包中添加了更新標志,則客戶端可根據(jù)通訊數(shù)據(jù)包中的更新標志來判斷通訊數(shù)據(jù)包中是否有更新數(shù)據(jù)。207:客戶端提取通訊數(shù)據(jù)包中的更新數(shù)據(jù),根據(jù)提取的更新數(shù)據(jù)進行數(shù)據(jù)更新。具體地,本實施例不對客戶端根據(jù)提取的更新數(shù)據(jù)進行數(shù)據(jù)更新的方式進行限定,當客戶端提取服務(wù)器發(fā)送的通訊數(shù)據(jù)包中的更新數(shù)據(jù)之后,客戶端可將提取的更新數(shù)據(jù)發(fā)送給更新處理函數(shù),由更新處理函數(shù)進行數(shù)據(jù)更新的處理。其中,更新處理函數(shù)是客戶端內(nèi)處理更新數(shù)據(jù)的函數(shù)。更新處理函數(shù)接收到客戶端發(fā)送的更新數(shù)據(jù)之后,根據(jù)報文中攜帶的數(shù)據(jù)類型,將更新數(shù)據(jù)分別發(fā)送到對應(yīng)類型的數(shù)據(jù)庫中,對數(shù)據(jù)庫中原有數(shù)據(jù) 進行更新,以供客戶端調(diào)用。208:客戶端提取通訊數(shù)據(jù)包中的響應(yīng)數(shù)據(jù),將該響應(yīng)數(shù)據(jù)發(fā)送給原有調(diào)用函數(shù)進行處理。針對該步驟,雖然客戶端在上述步驟206中可判斷出服務(wù)器發(fā)送的通訊數(shù)據(jù)包中沒有添加更新數(shù)據(jù),但該通訊數(shù)據(jù)包中仍然會攜帶通訊時產(chǎn)生的響應(yīng)數(shù)據(jù),因此,客戶端可提取通訊數(shù)據(jù)包中的響應(yīng)數(shù)據(jù),并將該響應(yīng)數(shù)據(jù)發(fā)送給原有調(diào)用函數(shù),通過原有調(diào)用函數(shù)來對通訊數(shù)據(jù)包中的響應(yīng)數(shù)據(jù)進行處理。本實施例不對具體的原有調(diào)用函數(shù)進行限定,同樣不對原有調(diào)用函數(shù)處理通訊數(shù)據(jù)包中的響應(yīng)數(shù)據(jù)的方式進行限定。本實施例提供的方法,通過服務(wù)器將通訊前產(chǎn)生的更新數(shù)據(jù)與通訊時產(chǎn)生的響應(yīng)數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中發(fā)送給客戶端,不僅減少單獨發(fā)送更新數(shù)據(jù)時占用的資源,還可減少資源損耗,從而增加服務(wù)器可承載的客戶端數(shù)量;同時,通過任何一次與客戶端的連接,將更新數(shù)據(jù)添加在通訊數(shù)據(jù)包中發(fā)送給客戶端的操作是基于事件機制的,避免采用輪詢而產(chǎn)生的通訊壓力,進而可使客戶端及時高效地更新數(shù)據(jù)。實施例三參見圖3,本實施例提供了一種服務(wù)器,該服務(wù)器用于執(zhí)行上述實施例一和實施例二所提供的更新數(shù)據(jù)的方法,該服務(wù)器包括:
接收模塊301,用于接收客戶端發(fā)送的通訊請求;響應(yīng)模塊302,用于根據(jù)接收模塊301接收到的通訊請求產(chǎn)生響應(yīng)數(shù)據(jù);獲取模塊303,用于獲取通訊前產(chǎn)生的更新數(shù)據(jù);添加模塊304,用于將響應(yīng)模塊302產(chǎn)生的響應(yīng)數(shù)據(jù)與獲取模塊303獲取到的更新數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中;發(fā)送模塊305,用于將添加模塊304添加后的通訊數(shù)據(jù)包發(fā)送給客戶端,使客戶端根據(jù)通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新。進一步地,參見圖4,該服務(wù)器還包括:存儲模塊306,用于將通訊前產(chǎn)生的更新數(shù)據(jù)存儲在與客戶端相對應(yīng)的緩存中;獲取模塊303,還用于從緩存中獲取存儲模塊306存儲的更新數(shù)據(jù)。其中,緩存包括數(shù)據(jù)位和更新標志位,數(shù)據(jù)位用于緩存更新數(shù)據(jù),更新標志位用于標識緩存中是否有更新數(shù)據(jù);獲取模塊303,還用于根據(jù)更新標志位判斷緩存中是否有更新數(shù)據(jù),如果是,則從緩存中獲取更新數(shù)據(jù)。優(yōu)選地,添加模塊304,還用于在通訊數(shù)據(jù)包中添加數(shù)據(jù)總長度標識及響應(yīng)數(shù)據(jù)長度標識,使客戶端根據(jù)通訊數(shù)據(jù)包中的數(shù)據(jù)總長度標識及響應(yīng)數(shù)據(jù)長度標識判斷通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù),如果是,則根據(jù)通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新??蛇x地,添加模塊304,還用于在通訊數(shù)據(jù)包中添加更新標志,使客戶端根據(jù)通訊數(shù)據(jù)包中添加的更新標志判斷通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù),如果是,則根據(jù)通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新。本實施例提供的服務(wù)器,通過將通訊前產(chǎn)生的更新數(shù)據(jù)與通訊時產(chǎn)生的響應(yīng)數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中發(fā)送給客戶端,不僅減少單獨發(fā)送更新數(shù)據(jù)時占用的資源,還可減少資源損耗,從而增加服務(wù)器可承載的客戶端數(shù)量;同時,通過任何一次與客戶端的連接,將更新數(shù)據(jù)添加在通訊數(shù)據(jù)包中發(fā)送給客戶端的操作是基于事件機制的,避免采用輪詢而產(chǎn)生的通訊壓力,進而可使客戶端及時高效地更新數(shù)據(jù)。實施例四參見圖5,本實施例提供了一種客戶端,該客戶端用于執(zhí)行上述實施例一和實施例二所提供的更新數(shù)據(jù)的方法,該客戶端包括:發(fā)送模塊501,用于向服務(wù)器發(fā)送通訊請求;接收模塊502,用于接收服務(wù)器發(fā)送的添加了響應(yīng)數(shù)據(jù)及更新數(shù)據(jù)的通訊數(shù)據(jù)包,通訊響應(yīng)數(shù)據(jù)為服務(wù)器根據(jù)發(fā)送模塊501發(fā)送的通訊請求產(chǎn)生的通訊響應(yīng)數(shù)據(jù),更新數(shù)據(jù)為服務(wù)器在通訊前產(chǎn)生的更新數(shù)據(jù);更新模塊503,用于根據(jù)接收模塊502接收到的通訊數(shù)據(jù)包中添加的更新數(shù)據(jù)進行數(shù)據(jù)更新。優(yōu)選地,通訊數(shù)據(jù)包中還添加了數(shù)據(jù)總長度標識及響應(yīng)數(shù)據(jù)長度標識;更新模塊503,還用于根據(jù)接收模塊502接收到的通訊數(shù)據(jù)包中添加的數(shù)據(jù)總長度標識及響應(yīng)數(shù)據(jù)長度標識判斷通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù),如果是,則根據(jù)通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新??蛇x地,通訊數(shù) 據(jù)包中還添加了更新標志;
更新模塊503,還用于根據(jù)接收模塊502接收到的通訊數(shù)據(jù)包中添加的更新標志判斷通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù),如果是,則根據(jù)通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新。本實施例提供的客戶端,通過接收服務(wù)器發(fā)送的添加了響應(yīng)數(shù)據(jù)和更新數(shù)據(jù)的通訊數(shù)據(jù)包,并根據(jù)通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新,不僅減少了服務(wù)器單獨發(fā)送更新數(shù)據(jù)時占用的資源,還可減少資源損耗,從而增加服務(wù)器可承載的客戶端數(shù)量;同時,通過任何一次與服務(wù)器的連接,接收服務(wù)器發(fā)送的添加了更新數(shù)據(jù)的通訊數(shù)據(jù)包的操作是基于事件機制的,避免采用輪詢而產(chǎn)生的通訊壓力,進而可及時高效地更新數(shù)據(jù)。實施例五參見圖6,本實施例提供了一種更新數(shù)據(jù)的系統(tǒng),該系統(tǒng)包括:服務(wù)器601和客戶端 602 ;其中,服務(wù)器601可以為上述實施例三提供的服務(wù)器;客戶端602可以為上述實施例四提供的客戶端。本實施例提供的系統(tǒng),通過服務(wù)器將通訊前產(chǎn)生的更新數(shù)據(jù)與通訊時產(chǎn)生的響應(yīng)數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中發(fā)送給客戶端,不僅減少單獨發(fā)送更新數(shù)據(jù)時占用的資源,還可減少資源損耗,從而增加服務(wù)器可承載的客戶端數(shù)量;同時,通過任何一次與客戶端的連接,將更新數(shù)據(jù)添加在通訊數(shù)據(jù)包中發(fā)送給客戶端的操作是基于事件機制的,避免采用輪詢而產(chǎn)生的通訊壓力,進而可使客戶端及時高效地更新數(shù)據(jù)。需要說明的是:上述實施例提供的服務(wù)器與客戶端在進行數(shù)據(jù)更新時,僅以上述各功能模塊的劃分進行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將服務(wù)器和客戶端的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實施例提供的服務(wù)器、客戶端、更新數(shù)據(jù)的系統(tǒng)與更新數(shù)據(jù)的方法實施例屬于同一構(gòu)思,其具體實現(xiàn)過程詳見方法實施例,這里不再贅述。上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。本發(fā)明實施例中的全部或部分步驟,可以利用軟件實現(xiàn),相應(yīng)的軟件程序可以存儲在可讀取的存儲介質(zhì)中,如光盤或硬盤等。以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、 等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種更新數(shù)據(jù)的方法,其特征在于,所述方法包括: 接收客戶端發(fā)送的通訊請求,根據(jù)所述通訊請求產(chǎn)生響應(yīng)數(shù)據(jù),并獲取通訊前產(chǎn)生的更新數(shù)據(jù); 將所述響應(yīng)數(shù)據(jù)與所述更新數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中,并將所述通訊數(shù)據(jù)包發(fā)送給所述客戶端,使所述客戶端根據(jù)所述通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述響應(yīng)數(shù)據(jù)與所述更新數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中之前,還包括: 將通訊前產(chǎn)生的更新數(shù)據(jù)存儲在與所述客戶端相對應(yīng)的緩存中; 所述獲取通訊前產(chǎn)生的更新數(shù)據(jù),包括: 從所述緩存中獲取存儲的更新數(shù)據(jù)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述緩存包括數(shù)據(jù)位和更新標志位,所述數(shù)據(jù)位用于緩存更新數(shù)據(jù),所述更新標志位用于標識所述緩存中是否有更新數(shù)據(jù); 所述從所述緩存中獲取 存儲的更新數(shù)據(jù),包括: 根據(jù)所述更新標志位判斷所述緩存中是否存儲有更新數(shù)據(jù),如果是,則從所述緩存中獲取存儲的更新數(shù)據(jù)。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述響應(yīng)數(shù)據(jù)與所述更新數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中時,還包括: 在所述通訊數(shù)據(jù)包中添加數(shù)據(jù)總長度標識及響應(yīng)數(shù)據(jù)長度標識,使所述客戶端根據(jù)所述通訊數(shù)據(jù)包中的數(shù)據(jù)總長度標識及響應(yīng)數(shù)據(jù)長度標識判斷所述通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù),如果是,則根據(jù)所述通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述響應(yīng)數(shù)據(jù)與所述更新數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中時,還包括: 在所述通訊數(shù)據(jù)包中添加更新標志,使所述客戶端根據(jù)所述通訊數(shù)據(jù)包中添加的更新標志判斷所述通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù),如果是,則根據(jù)所述通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新。
6.一種服務(wù)器,其特征在于,所述服務(wù)器包括: 接收模塊,用于接收客戶端發(fā)送的通訊請求; 響應(yīng)模塊,用于根據(jù)所述接收模塊接收到的通訊請求產(chǎn)生響應(yīng)數(shù)據(jù); 獲取模塊,用于獲取通訊前產(chǎn)生的更新數(shù)據(jù); 添加模塊,用于將所述響應(yīng)模塊產(chǎn)生的響應(yīng)數(shù)據(jù)與所述獲取模塊獲取到的更新數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中; 發(fā)送模塊,用于將所述添加模塊添加后的通訊數(shù)據(jù)包發(fā)送給所述客戶端,使所述客戶端根據(jù)所述通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新。
7.根據(jù)權(quán)利要求6所述的服務(wù)器,其特征在于,所述服務(wù)器還包括: 存儲模塊,用于將通訊前產(chǎn)生的更新數(shù)據(jù)存儲在與所述客戶端相對應(yīng)的緩存中; 所述獲取模塊,用于從所述緩存中獲取所述存儲模塊存儲的更新數(shù)據(jù)。
8.根據(jù)權(quán)利要求7所述的服務(wù)器,其特征在于,所述緩存包括數(shù)據(jù)位和更新標志位,所述數(shù)據(jù)位用于緩存更新數(shù)據(jù),所述更新標志位用于標識所述緩存中是否有更新數(shù)據(jù); 所述獲取模塊,用于根據(jù)所述更新標志位判斷所述緩存中是否有更新數(shù)據(jù),如果是,則從所述緩存中獲取所述更新數(shù)據(jù)。
9.根據(jù)權(quán)利要求6所述的服務(wù)器,其特征在于,所述添加模塊,還用于在所述通訊數(shù)據(jù)包中添加數(shù)據(jù)總長度標識及響應(yīng)數(shù)據(jù)長度標識,使所述客戶端根據(jù)所述通訊數(shù)據(jù)包中的數(shù)據(jù)總長度標識及響應(yīng)數(shù)據(jù)長度標識判斷所述通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù),如果是,則根據(jù)所述通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新。
10.根據(jù)權(quán)利要求6所述的服務(wù)器,其特征在于,所述添加模塊,還用于在所述通訊數(shù)據(jù)包中添加更新標志,使所述客戶端根據(jù)所述通訊數(shù)據(jù)包中添加的更新標志判斷所述通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù),如果是,則根據(jù)所述通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新。
11.一種客戶端,其特征在于,所述客戶端包括: 發(fā)送模塊,用于向服務(wù)器發(fā)送通訊請求; 接收模塊,用于接收所述服務(wù)器發(fā)送的添加了響應(yīng)數(shù)據(jù)及更新數(shù)據(jù)的通訊數(shù)據(jù)包,所述通訊響應(yīng)數(shù)據(jù)為所述服務(wù)器根據(jù)所述發(fā)送模塊發(fā)送的通訊請求產(chǎn)生的通訊響應(yīng)數(shù)據(jù),所述更新數(shù)據(jù)為所述服務(wù)器在通訊前產(chǎn)生的更新數(shù)據(jù); 更新模塊,用于根據(jù)所述接收模塊接收到的通訊數(shù)據(jù)包中添加的更新數(shù)據(jù)進行數(shù)據(jù)更 新。
12.根據(jù)權(quán)利要求11所述的客戶端,其特征在于,所述通訊數(shù)據(jù)包中還添加了數(shù)據(jù)總長度標識及響應(yīng)數(shù)據(jù)長度標識; 所述更新模塊,用于根據(jù)所述接收模塊接收到的通訊數(shù)據(jù)包中添加的數(shù)據(jù)總長度標識及響應(yīng)數(shù)據(jù)長度標識判斷所述通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù),如果是,則根據(jù)所述通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新。
13.根據(jù)權(quán)利要求11所述的客戶端,其特征在于,所述通訊數(shù)據(jù)包中還添加了更新標志; 所述更新模塊,用于根據(jù)所述接收模塊接收到的通訊數(shù)據(jù)包中添加的更新標志判斷所述通訊數(shù)據(jù)包中是否添加了更新數(shù)據(jù),如果是,則根據(jù)所述通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新。
14.一種更新數(shù)據(jù)的系統(tǒng),其特征在于,所述系統(tǒng)包括:如權(quán)利要求6-10中任一項所述的服務(wù)器,以及如權(quán)利要求11-13中任一項所述的客戶端。
全文摘要
本發(fā)明公開了一種更新數(shù)據(jù)的方法、服務(wù)器、客戶端及系統(tǒng),屬于通信領(lǐng)域。方法包括接收客戶端發(fā)送的通訊請求,根據(jù)通訊請求產(chǎn)生響應(yīng)數(shù)據(jù),并獲取通訊前產(chǎn)生的更新數(shù)據(jù);將響應(yīng)數(shù)據(jù)與更新數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中,并將通訊數(shù)據(jù)包發(fā)送給客戶端,使客戶端根據(jù)通訊數(shù)據(jù)包中的更新數(shù)據(jù)進行數(shù)據(jù)更新。本發(fā)明通過將更新數(shù)據(jù)與響應(yīng)數(shù)據(jù)一并添加在通訊數(shù)據(jù)包中發(fā)送給客戶端,不僅減少單獨發(fā)送更新數(shù)據(jù)時占用的資源,減少資源損耗,從而增加服務(wù)器可承載的客戶端數(shù)量;同時,通過任何一次與客戶端的連接,將更新數(shù)據(jù)添加在通訊數(shù)據(jù)包中發(fā)送給客戶端的操作是基于事件機制的,避免采用輪詢而產(chǎn)生的通訊壓力,進而可使客戶端及時高效地更新數(shù)據(jù)。
文檔編號H04L29/08GK103220260SQ20121001906
公開日2013年7月24日 申請日期2012年1月20日 優(yōu)先權(quán)日2012年1月20日
發(fā)明者周濤, 董錫軍, 孟金鋒, 毛吉振, 黃立柯, 石航杰, 劉毅, 王磊, 古振興, 周斌, 王圣元 申請人:騰訊科技(深圳)有限公司