2

javascript web SDKを使用しているFirebaseアプリがあります。私たちのクライアントはカスタム認証方式を使用しています。 onDisconnectを使用してプレゼンスシステムを実装しました。 onDisconnectは1時間に1回発火し、ほとんどの場合、クライアントは実際に切断されませんでした。クライアントの接続/切断イベントを追跡して提示しているため、クライアントが接続/切断イベントを表示していないときに切断されているように見えるため、これは問題です。Firebase onDisconnectが1時間ごとに起動するのはなぜですか?

私の推測では、1時間ごとに起こっている認証トークンの更新があり、それによってonDisconnectが起動すると思います。しかし、私はそれを確認したり、別の根本的な原因を見つけるために深く掘り下げる方法を知らない。誰も私がこれを理解するのを助けることができますか?

これはthis questionの複製であることが示唆されていますが、これはonDisconnect操作の基本です。これは、クライアントが切断していないにもかかわらずonDisconnectが1時間ごとに起動するという繰り返し可能な観察です。

+0

[Firebase:onDisconnectイベントの発生時に発生する可能性がありますか?](http://stackoverflow.com/questions/30668292/firebase-when-ondisconnect-event-fire) –

+0

私はそうは思わない。その質問はonDisconnectの基本的な動作に関するものです。この質問は、onDisconnectが接続されているクライアントの1時間ごとに起動するという私の見解です。 – JesterVineo

+0

いつも1時間ですか?すべてのクライアントで修正済みですか?彼らの地域、国は何ですか? –

答えて

2

このonDisconnectの機能がどのように実装されているかわかりません。あなたが切断をどのように決定するのか説明することは役に立ちます。 Firebase Idトークンは1時間ごとに期限切れとなり、リフレッシュする必要があります(ユーザーメソッドの呼び出し後に自動的にリフレッシュされます)。リアルタイムデータベースを使用している場合、有効期限が切れたときに更新を試みます。トークンの発行時にonAuthStateChangedにリスナーを追加し、トークンが自動的に更新されるようにタイマーを設定して(getToken(true))、有効期限が切れる前に切断がトリガーされないようにすることができます。

また、Firebaseはトークンの有効期限が切れているとみなすため、この切断中には失敗します。あなたはFirebaseのWeb SDKを使用しているので、あなたは現在のトークンを取得し、呼び出すことによって、その有効期限のタイムスタンプをチェックすることができ

0

firebase.auth().currentUser.getToken(false); // pass false to retrieve cached token

あなたは可能性がセットアップ区間定期的にトークンexpirationTimeをチェックして、トークンを更新手動で試してみます(有効期限が切れる前に、例えば60秒)には、有効期限が切れる直前に呼び出すこと:

firebase.auth().currentUser.getToken(true); // pass true to force token refresh

これはonDisconnect EVを防ぐ必要がありますent(.info/connectedリスナー)がトークンの有効期限切れにより発砲するのを防ぎます。

関連する問題