1

IndexedDB を使用してデータをローカルに保存する chrome 拡張機能を開発しました。複数のコンピュータ間でデータを同期する機能を追加したい。解決策を教えてください。ありがとう

編集:私はサーバーを維持しておらず、ユーザーの個人情報を収集していません。拡張機能は、基本的に無料のサードパーティからのデータのマッシュアップです。したがって、ユーザーがコンピューター A のデータに変更を加えた場合、コンピューター B またはデバイス C にも反映されるはずです (将来の todo サポートのため:)

4

2 に答える 2

2

更新:あなたの編集に基づいて、私はデニMf氏のリンクがピアツーピアを機能させるための良い指針であると信じています。しかし、テクノロジーはまだ一般的に利用可能ではなく、おそらくサーバー、おそらくサードパーティ(Amazon S3および/または同様のサービス)と同期する方が良いと思います。Chromeにはすでにいくつかの同期サービスが組み込まれています-異なるコンピューターでChrome拡張機能データを同期するにはどうすればよいですか?-ただし、これは少量のデータにしか使用できないため、現実的には、他の場所でホストされている実際のデータへのポインターにしかなり得ません。

以下の元の答え:

あなたが理解する必要があるいくつかの側面があります。まず、「複数のコンピューター」とは、複数のコンピューターが同じサーバーのセットと通信していることを意味しますか、それともピアツーピアの意味で複数のコンピューターを意味しますか(各コンピューターはクライアントとサーバーの両方です) 。

次に、同期メカニズムとプロトコルが必要です。すべてが素晴らしく、誰もが本当の秘密や実行をせずに信頼されている場合、少なくとも2つの課題があります。ある種のプライベートネットワークでは、CouchDBなどのようなものを使用すると、すぐに使用できます(ただし、データに認証と承認を追加しようとするとすぐに困難になります)。そうでない場合は、自分でロールする必要があります。

クライアントが特定のサーバーセットと通信していると仮定し(HTTPなどを使用)、CouchDBまたは同様のものを使用できないと仮定すると(前の段落で述べた理由により)、独自のサーバーをローリングすることはそれほど難しくありません。データベース行(または同様のもの)は任意のクライアントまたはサーバーで作成できるため、従来のシリアル整数主キーを使用する価値はほとんどなく、一意のキーにはUUIDなどを使用する必要があります(各マシンが独自のキーを作成できるようにするため) -一意と見なされます-任意のオブジェクトのキー)。「更新された」タイムスタンプ(オブジェクトが作成または更新されたとき)を含む行ごとに少なくとも1つの列を追加し、最後の同期タイムスタンプを含む別のデータベースを追加します。クライアントが接続するときはいつでも、最後に接続してからの更新をサーバーに要求します。最後に接続してからローカルで作成した更新をサーバーに送信します。削除された行には「更新された」タイムスタンプがないため、行の削除などは少し注意が必要です。したがって、単純な「削除済み」フラグを各行に追加することを検討してください。

これは、少なくともあなたを動かすのに十分なはずです。

于 2012-08-08T18:15:40.580 に答える
2

これは、ブラウザからブラウザ(ピアツーピア)への接続を確立する方法を説明する良い答えです。

他の解決策は、ユーザーがサーバーまたはサードパーティのストレージにデータを保存し、後で他のコンピューターにデータを取得できるようにする、ある種のサーバー側アプリケーションを作成することです。

于 2012-08-08T17:28:25.660 に答える