2012-08-08 151 views
0

我開發了一個使用IndexedDB在本地保存數據的chrome擴展。我想添加一個功能來在多臺計算機之間同步數據。你能建議我一個解決方案嗎?謝謝用於Chrome擴展IndexedDB的同步解決方案

編輯:我沒有維護任何服務器,也沒有收集任何用戶的私人信息。該擴展基本上是來自免費第三方的數據混搭。因此,如果我的用戶對計算機A中的數據進行任何更改,它也應該反映在計算機B或設備C中(用於將來的待辦事項支持:)

回答

2

更新:根據您的編輯,我相信Deni Mf先生的鏈接是獲​​得點對點工作的一個很好的指針。但我相信技術還不能用於一般用途,並且您可能會更好地與服務器進行同步,甚至可能允許您執行此操作(Amazon S3和/或類似服務)的第三方進行同步。 Chrome已經建立了一些同步服務 - How to synchronize Chrome extension data on different computers? - 但您只能將其用於少量數據,實際上這些只能指向其他地方託管的真實數據。

原文如下答案:

有你需要弄清楚幾個方面。首先,當你說「多臺計算機」時,這是否意味着多臺計算機與同一組服務器進行對話,或者實際上是否指對等意義上的多臺計算機(每臺計算機既是客戶端又是服務器) 。其次,你需要一個同步機制和協議。如果一切都很好,每個人都信任,沒有真正的祕密和運行你至少有一些挑戰,在某種私人網絡上,你可能會很好地使用諸如CouchDB之類的東西,它可以很好地工作(但是一旦你嘗試向數據添加認證和授權就會變得很有挑戰性)。如果沒有,你需要推出自己的。

假設你有客戶與一組特定的服務器通信(使用HTTP或類似的方式),並假設你不能使用CouchDB或類似的(由於前面段落中所述的原因),滾動你自己並不難。由於可以在任何客戶端或服務器上創建數據庫行(或類似的),因此使用傳統的串行整數主鍵很可能不值得,因此您需要使用UUID或類似的唯一鍵(因此每臺機器都可以創建它自己的 - 假定唯一 - 任何對象的關鍵)。爲包含「更新」時間戳的每行添加至少一列(創建或更新對象時),並添加包含上次同步時間戳的另一個數據庫。每當客戶端連接時,請詢問服務器自上次連接以來的任何更新,並向服務器發送自上次連接以來本地創建的任何更新。像刪除行這樣的事情有點棘手,因爲刪除的行沒有「更新」的時間戳,所以考慮在每行添加一個簡單的「刪除」標誌來簡化操作。

這應該至少足以讓你去。

2

這是一個good answer,它說明如何使瀏覽器成爲瀏覽器對等)連接。

其他解決方案將製作某種服務器端應用程序,它允許用戶將數據存儲在服務器或某些第三方存儲上,然後再將數據檢索到其他計算機。