9

Firebaseには、複数のクライアントによって更新されたデータセットがあります。データセットの日時に最後に変更されたものを追跡します。クライアントのローカルクロックが完全に同期していない可能性があるため、クライアントが日時に変更を設定することに依存することはできません。

クロックに基づいてデータセットにFirebaseタグのタイムスタンプを付けて、最後に変更されたものを追跡する方法はありますか?

4

2 に答える 2

5

現在、これをサポートするためのいくつかの機能に取り組んでいますが、現在これを行う方法はありません。ただし、「push()」によって作成されたIDは時系列で並べられており、作成時にクライアント側のクロックスキューを可能な限り補正するため、実行しようとしているのがリストへの書き込みは順番に行われます。push()を使用して行うことができます。

この機能をどのように表示したいかを知りたいと思います。時間があれば、Firebaseのandrewにメールを送っていただければ幸いです...

更新: Firebaseは、サーバーのタイムスタンプの設定と、クライアントで直接サーバーの時刻にアクセスすることをサポートするようになりました。こちらのドキュメントをご覧ください: https ://www.firebase.com/docs/managing-presence.html

于 2012-10-23T19:21:25.307 に答える
0

私たちは同じ船に乗っています...そして遅かれ早かれ、多くのFirebaseクライアントがこの問題を抱えることになるでしょう。これは、昔の「クライアントサーバー」時代には直面しなかった「新しい種類の」問題だからです。

現在の解決策(まだ作成中)は、初期化時にクライアントとOURサーバー間の時間差を推定することであり、それらは補正します。
つまり、 x = new Date()
あった場合、 x = ourDateService.now()になります。

now()関数は単にnew Date()+diffを実行します

これは、ミリ秒の精度を必要としないため、私たちにとっては機能します。これは、一度ロードされるシングルページアプリであるため、ロード時にこの差分チェックを実行して、DateServiceを初期化できますが、このソリューションはすべての人に機能するわけではありません(もちろん、それをlocalstorage / cookieに保存し、毎日再検証することができます)。

于 2012-10-27T00:09:43.310 に答える