結(jié)果為匹配,則接收所述服務(wù)器端發(fā)送的上一次同步后服務(wù)器端修改的數(shù)據(jù),并根據(jù)所述服務(wù)器端修改的數(shù)據(jù)更新本地相應(yīng)的數(shù)據(jù)。
[0077]通過上述步驟S401?S403,實現(xiàn)了服務(wù)器端單方同步,即,客戶端請求服務(wù)器端修改的數(shù)據(jù),客戶端不發(fā)送自己的修改給服務(wù)器端,并且在數(shù)據(jù)同步過程中,服務(wù)器端只將上一次同步后服務(wù)器端修改的數(shù)據(jù)向客戶端發(fā)送,這種數(shù)據(jù)增量同步的方式,減少了數(shù)據(jù)同步過程中的數(shù)據(jù)傳輸量,而且減少了網(wǎng)絡(luò)資源和時間消耗,提高了數(shù)據(jù)同步的效率。
[0078]根據(jù)本發(fā)明,在上述實施例一至實施例四中,當(dāng)數(shù)據(jù)同步完成時,還可以包括更新同步的時間戳的步驟,也就是說,在客戶端根據(jù)同步時間生成時間戳,并保存。
[0079]根據(jù)本發(fā)明,在上述實施例一至實施例四中,還可以包括以下步驟:
[0080]對更新后的本地數(shù)據(jù)進行標(biāo)識,并向所述服務(wù)器端發(fā)送所述更新后的本地數(shù)據(jù)的數(shù)據(jù)標(biāo)識與服務(wù)器端保存的相應(yīng)的數(shù)據(jù)的數(shù)據(jù)標(biāo)識的映射關(guān)系,以便由所述服務(wù)器端保存并維護所述映射關(guān)系。
[0081]具體地,同步完成后,客戶端可以對更新后的本地數(shù)據(jù)進行標(biāo)識,S卩,賦予本地數(shù)據(jù)LUID (本地唯一標(biāo)識符,Locally Unique Identifier),并根據(jù)數(shù)據(jù)的⑶ID (全局唯一標(biāo)識符,Globally Unique Identifier),向所述服務(wù)器端發(fā)送更新后的本地數(shù)據(jù)的數(shù)據(jù)標(biāo)識與服務(wù)器端保存的相應(yīng)的數(shù)據(jù)的數(shù)據(jù)標(biāo)識的映射關(guān)系,即,客戶端中數(shù)據(jù)的LUID標(biāo)識與服務(wù)器端相應(yīng)的數(shù)據(jù)的GUID標(biāo)識的映射關(guān)系,服務(wù)器端保存并維護該映射關(guān)系,以便進行下次數(shù)據(jù)同步時使用。
[0082]根據(jù)本發(fā)明,在上述實施例一至實施例四中,還可以包括接收所述服務(wù)器端發(fā)送的同步成功的確認(rèn)信息的步驟。具體地,服務(wù)器端在數(shù)據(jù)同步成功時可以向客戶端發(fā)送同步成功確認(rèn)信息。
[0083]本申請?zhí)峁┝艘环N數(shù)據(jù)同步方法,包括:服務(wù)器接收客戶端發(fā)送的數(shù)據(jù)同步請求,所述數(shù)據(jù)同步請求中包含上一次同步的時間戳;將所述請求中包含的上一次同步的時間戳與本地保存的上一次同步的時間戳進行匹配,并向所述客戶端返回匹配的結(jié)果;在所述結(jié)果為匹配的情況下,與客戶端交互修改的數(shù)據(jù)。以下結(jié)合具體實施例來對該方法進行詳細(xì)說明。
[0084]實施例五
[0085]圖5是根據(jù)本申請實施例五的數(shù)據(jù)同步方法的流程圖,該方法可以應(yīng)用于服務(wù)器端,進行與客戶端的數(shù)據(jù)同步。如圖5所示,該數(shù)據(jù)同步方法至少可以包括:
[0086]步驟S501,服務(wù)器接收客戶端發(fā)送的數(shù)據(jù)同步請求。
[0087]其中,所述數(shù)據(jù)同步請求中包含上一次同步的時間戳,S卩,上一次客戶端與服務(wù)器端進行數(shù)據(jù)同步而生成的時間戳。更具體地,所述數(shù)據(jù)同步請求中還可以包含:需要同步的數(shù)據(jù)的類型、客戶端設(shè)備信息以及身份驗證信息;其中,所述的數(shù)據(jù)的類型,例如可以包括視頻、音頻、照片等;所述客戶端設(shè)備信息可以包括:客戶端設(shè)備類型、設(shè)備型號、設(shè)備識別碼(例如,頂E1、IMSI等)、內(nèi)存信息等;所述身份驗證信息,例如可以包括:用戶名、密碼等。該客戶端可以向服務(wù)器端發(fā)送包含上述的數(shù)據(jù)的類型、客戶端設(shè)備信息以及身份驗證信息等書的數(shù)據(jù)包。
[0088]步驟S502,將所述請求中包含的上一次同步的時間戳與本地保存的上一次同步的時間戳進行匹配,并向所述客戶端返回匹配的結(jié)果。
[0089]具體而言,服務(wù)器端接收到客戶端發(fā)送的數(shù)據(jù)同步請求時,響應(yīng)該數(shù)據(jù)同步請求,將該請求中包含的上一次同步的時間戳與服務(wù)器端保存的時間戳進行匹配,如果時間戳匹配,說明上一次客戶端與服務(wù)器同步成功。
[0090]步驟S503,在所述結(jié)果為匹配的情況下,接收所述客戶端發(fā)送的上一次同步后客戶端修改的數(shù)據(jù),并根據(jù)所述客戶端修改的數(shù)據(jù)更新本地相應(yīng)的數(shù)據(jù)。
[0091]具體地,客戶端接收的服務(wù)器端返回的匹配結(jié)果,如果為該請求中包含的上一次同步的時間戳與服務(wù)器端保存的上一次同步的時間戳相互匹配,則表示上一次客戶端與服務(wù)器端同步成功,則客戶端可以根據(jù)該上一次同步的時間戳確定上一次同步后客戶端修改的數(shù)據(jù),并將上一次同步后客戶端修改的數(shù)據(jù)向該服務(wù)器端發(fā)送,服務(wù)器端接收到客戶端發(fā)送的客戶端修改的數(shù)據(jù),則可以對所述客戶端修改的數(shù)據(jù)進行解析(例如,根據(jù)預(yù)定的數(shù)據(jù)格式進行解析),并根據(jù)解析后得到的數(shù)據(jù)更新本地相應(yīng)的數(shù)據(jù)。
[0092]通過上述方式,客戶端只將上一次同步后客戶端修改的數(shù)據(jù)向該服務(wù)器端發(fā)送,可以減少數(shù)據(jù)同步過程中的數(shù)據(jù)傳輸量,減少網(wǎng)絡(luò)資源和時間消耗,提高數(shù)據(jù)同步的效率。
[0093]步驟S504,向所述客戶端發(fā)送上一次同步后服務(wù)器修改的數(shù)據(jù),由所述客戶端根據(jù)接收的該服務(wù)器修改的數(shù)據(jù)更新本地相應(yīng)的數(shù)據(jù)。
[0094]具體而言,服務(wù)器端可以根據(jù)上一次同步的時間戳確定上一次同步后服務(wù)器端修改的數(shù)據(jù),并將該服務(wù)器端修改的數(shù)據(jù)向所述客戶端發(fā)送,客戶端接收到該服務(wù)器端修改的數(shù)據(jù)后,根據(jù)該服務(wù)器端修改的數(shù)據(jù)更新本地相應(yīng)的數(shù)據(jù)。向所述客戶端發(fā)送上一次同步后服務(wù)器端修改的數(shù)據(jù),該修改的數(shù)據(jù)為JSON數(shù)據(jù)格式,也就是說,服務(wù)器可以將所述上一次同步后服務(wù)器端修改的數(shù)據(jù)以JSON數(shù)據(jù)格式向所述客戶端發(fā)送。JSON(JavaScriptObject Notat1n)相對于傳統(tǒng)的數(shù)據(jù)統(tǒng)一協(xié)議XML形式,數(shù)據(jù)體積小、格式簡單、并且解析快速,以JSON數(shù)據(jù)格式向客戶端發(fā)送服務(wù)器端修改的數(shù)據(jù)能夠進一步減少數(shù)據(jù)同步時的數(shù)據(jù)傳輸量,并進一步提高數(shù)據(jù)同步的效率,并且進行解析時,簡單快速。
[0095]通過上述步驟,實現(xiàn)了客戶端與服務(wù)器端的雙向同步,并且在同步過程中,客戶端和服務(wù)器端都只將上一次同步后修改的數(shù)據(jù)向?qū)Ψ桨l(fā)送,這種增量的同步方式,不僅減少了數(shù)據(jù)同步過程中的數(shù)據(jù)傳輸量,而且減少了網(wǎng)絡(luò)資源和時間消耗,提高數(shù)據(jù)同步的效率。
[0096]實施例六
[0097]圖6是根據(jù)本申請實施例六的數(shù)據(jù)同步方法的流程圖,該方法可以應(yīng)用于服務(wù)器端,進行與客戶端的數(shù)據(jù)同步。
[0098]如圖6所示,在圖5中的步驟S502處,向客戶端返回的將所述請求中包含的上一次同步的時間戳與所述服務(wù)器保存的上一次同步的時間戳進行匹配的結(jié)果,如果所述結(jié)果為不匹配,則可以進行步驟S505(圖6中省略步驟S503?S504)。其中,所述請求中包含的上一次同步的時間戳與所述服務(wù)器保存的上一次同步的時間戳不匹配的可以包括以下情況:客戶端與服務(wù)器本次為第一次同步,即,客戶端與服務(wù)器在之前還沒有進行過同步;或者,客戶端丟失了與服務(wù)器上一次同步的狀態(tài)信息,例如,清理垃圾時,上一次同步的時間戳被清理掉的情況,從而無法確認(rèn)上一次同步成功后客戶端發(fā)生了那些修改,則可以進行全量同步,如圖6所示,該方法至少還可以包括:
[0099]步驟S505,在所述結(jié)果為不匹配的情況下,接收所述客戶端發(fā)送的所述客戶端的所有數(shù)據(jù)。即,客戶端將其本地所有的數(shù)據(jù)向服務(wù)器端發(fā)送,發(fā)起全量同步,則服務(wù)器接收客戶端發(fā)送的該客戶端的所有數(shù)據(jù)。
[0100]步驟S506,將所述客戶端的所有數(shù)據(jù)與所述服務(wù)器保存的相應(yīng)的數(shù)據(jù)進行比對確定所述客戶端需要修改的數(shù)據(jù)。
[0101]具體地,服務(wù)器接收到客戶端發(fā)送的該客戶端的所有數(shù)據(jù)后,可以將該客戶端的所有數(shù)據(jù)與服務(wù)器保存的相應(yīng)的數(shù)據(jù)進行逐字段匹配,確定客戶端需要修改的數(shù)據(jù)。
[0102]步驟S507,向所述客戶端發(fā)送所述需要修改的數(shù)據(jù),由所述客戶端根據(jù)所述需要修改的數(shù)據(jù)更新所述客戶端的所有數(shù)據(jù)。
[0103]服務(wù)器確定了客戶端需要修改的數(shù)據(jù),則可以將該客戶端需要修改的數(shù)據(jù)返回給該客戶端,以便由客戶端根據(jù)該客戶端需要修改的數(shù)據(jù),更新客戶端相應(yīng)的數(shù)據(jù)。
[0104]可選地,如圖6所示,基于上述實施例,該方法還可以包括以下步驟:
[0105]步驟S508,將所述客戶端的所有數(shù)據(jù)與所述服務(wù)器保存的相應(yīng)的數(shù)據(jù)進行比對確定所述服務(wù)器需要修改的數(shù)據(jù)。
[0106]具體地,可以將該客戶端的所有數(shù)據(jù)與服務(wù)器保存的相應(yīng)的數(shù)據(jù)進行逐字段匹配,確定服務(wù)器需要修改的數(shù)據(jù)。
[0107]步驟S509,根據(jù)所述服務(wù)器需要修改的數(shù)據(jù)更新所述服務(wù)器保存的相應(yīng)的數(shù)據(jù)。
[0108]具體而言,可以對該服務(wù)器需要修改的數(shù)據(jù)進行解析(例如,根據(jù)預(yù)定的數(shù)據(jù)格式進行解析),根據(jù)解析后得到的數(shù)據(jù)更新本地相應(yīng)的數(shù)據(jù)。
[0109]其中,步驟S508?S509可以在步驟S506?S507之前進行,也可以在步驟S506?S507之后進行。
[0110]通過上述實施例六中的步驟,保證了客戶端與服務(wù)器第一次進行數(shù)據(jù)同步時,實現(xiàn)數(shù)據(jù)的全量同步,在本次數(shù)據(jù)同步的基礎(chǔ)上,再次進行數(shù)據(jù)同步時,即可進行數(shù)據(jù)的增量同步。
[0111]可選地,在圖5或圖6的基礎(chǔ)上,步驟S501之前還可以包括:當(dāng)檢測到有數(shù)據(jù)發(fā)生修改時,向相應(yīng)的客戶端推送數(shù)據(jù)更新通知的步驟。
[0112]具體地,該相應(yīng)的客戶端接收到服務(wù)器推送的數(shù)據(jù)更新通知時,可以根據(jù)具體情況向服務(wù)器發(fā)送數(shù)據(jù)同步,則服務(wù)器端可以進行步驟S501,接收客戶端發(fā)送的數(shù)據(jù)同步請求,并在接下來進行步驟S502?S509。
[0113]通過上述步驟,服務(wù)器向客戶端推送數(shù)據(jù)更新通知,客戶端接收到服務(wù)器發(fā)送的數(shù)據(jù)更新通知后,得知服務(wù)器產(chǎn)生了數(shù)據(jù)修改,則可以根據(jù)具體情況向服務(wù)器端發(fā)