2016-06-20 7 views
2

Firebase events apiを使用してリアルタイムでクライアント間で何かを同期させるのは良い考えですか?遅延のないFirebaseイベント

たとえば、クライアントでビデオを正確に(遅延が30ms未満の)再生したい場合は、ここでFirebaseに頼ることができますか? Firebaseを使用して、両方のクライアントで可能な限り同期されたイベントを開始する方法はありますか? (クライアントがブラウザの同じページを見ていると仮定して)。

私はそれを試してみましたが、それはかなり信頼できるようですが、正しいアプローチであるとは確信できません。

これを行うもう1つの方法は、「XXX UTCで開始」というパケットを交換することです。ここで、XXXは現在+ 1000msの時間です(たとえば)。 1つのクライアントのパケット伝送には、さらに900msの間に40msかかることがあります。しかし、このイベントは同期されます。しかし、ここでの質問は、クライアントの時間が正しく設定されていることを知る方法です。

私は車輪を再発明したくないし、あなたがこの経験を以前に持っていたかどうかを確認したい。

答えて

4

クライアントがFirebaseデータベースのバックエンドに接続すると、Firebase SDKはそのクライアントの待ち時間を検出します。検出されたレイテンシに対してローカルの時間ベースの操作(push()およびServerValue.TIMESTAMPなど)が自動的に修正されます。 listen for the latency on .info/serverTimeOffsetも可能です。

これにより、クライアントがどのように同期しているかをFirebaseが推測できるようになります。それがあなたのニーズに合わせてビデオの再生を同期させるのに十分であるかどうかは誰でも推測できます。私はあなたがそれをテストし始めるなら、いくつかの数字を聞くのが大好きです。

+0

こんにちはフランクFirebaseの平均待ち時間はどれくらいですか?私たちはゲームでリアルタイムの動きに悩まされています(時には滑らかですが、他のユーザーからの更新が遅れているため動きが鈍い)、FBで間違っているのかどうか疑問に思っていますまたはFBがこれに適していない場合など)。 – Crashalot

+0

待ち時間は、世界中のどこにいるか、接続している人のタイプ、アクティブなユーザーの数などによって異なります。これらはFirebaseに固有のものではなく、インターネット上の実際のものです。彼らはコントロールできないので、ほとんどのゲーム開発者は、これらの既知のパラメータ内で動作するようにゲームを設計します。 –

+0

うん、理解される。あいまいさを残して申し訳ありません。同じWi-Fi(ベイエリア)に接続された2台のデバイスでテストしましたが、FBが誤って構成されているか誤っているのか、良いネットワーキング条件でも50ミリ秒未満のパフォーマンスをサポートしていないのかどうかは分かりませんでした。速い応答に感謝します! – Crashalot