2016-10-06 4 views
0

私は典型的なリスナーに(Herokuの、たとえば、上の)クラウドでホストされているFirebaseリアルタイムデータベースサーバアプリがある場合:スリープ状態のFirebaseデータベースサーバアプリケーションがリスナーイベントで起動しますか?

FirebaseOptions options = new FirebaseOptions.Builder() 
    ... 
FirebaseApp.initializeApp(options); 
... 
ref.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     ... 
    } 
}); 

をして、このサーバアプリがときどきスリープ状態になる、それがリスナーイベントのために目を覚ますだろう? Firebaseがリスナーイベントのために私のサーバアプリケーションと対話するために使用するメカニズムは何ですか?通常のhttpリクエストですか? (例えば、あなたのアプリケーションサーバー上で実行される1つのような)

答えて

1
  • Firebaseクライアントは 通常、バックエンドとの通信に(ウェブ)ソケットを使用しています。

  • ほとんどの場合、ネイティブソケットの上部にある の上にWebソケットエミュレーションレイヤーを実行している可能性があります。

  • Webソケットが使用できないブラウザでは、Firebaseクライアント がロングポーリングに戻ります。

  • Fireboxクライアントは、ソケット がタイムアウトしないように、定期的にキープアライブを送信します。

+0

Androidアプリの場合はどうなりますか?私はDBリスナーをAndroidアプリに設定しています。子供が追加されるたびに、私はどのように目を覚ますべきですか?リスナーをサービスに入れてもデバイスが起きないので、WakefulBroadcastを使用する必要があります。一方、firebaseはどのような手段でもデバイスを復帰させる能力を持っていますか? –

+1

Firebaseデータベースはソケット接続に依存しています。デバイスがソケットを閉じると、データベースクライアントが起動する方法はありません。しかし、このような場合Firebase Cloud Messagingを使用してデバイスを起動させるメッセージを送信し、データベースクライアントに接続を復元してデータを取得する機会を与えることができます。これは、非公式にプッシュツーシンクまたはティック・トゥ・シンクと呼ばれます。私の答えはこちら:https://stackoverflow.com/a/44828984/209103 –

関連する問題