3

Firebase ライブラリを使用して巣の更新を継続的に監視する Web アプリのプロトタイプを作成しています。その方法について説明したいと思います。Nest には、ネスト開発者向けにユーザー側の JavaScript を使用するモバイル アプリと Web アプリの例がありますが、継続的な監視を実装する node.js を使用する例はありません。実際の例の代わりに、ここでいくつかのアイデアについて説明したいと思います。

私がやりたいことの例: 煙探知器が鳴ったら、私と私の家族に一斉に電子メールを送信したいと思います (一斉送信のメカニズムは重要ではありません)。私は node.js と express.js を使用していますが、自宅を監視するために Web ページを開いたままにしておく必要はありません。したがって、サーバー側で監視を実装したいと考えています。

私の現在の計画は、機能をルートコントローラーで使用するクラスに組み込むことです。これにより、ユーザーは URL にリクエストを発行して監視を有効にし、ユーザーが Web サイトを離れた後も接続と関連データを保持できるようになります。私のテストでは、Web アプリはネストから切断した後もネストを監視し続けますが、接続が最終的にタイムアウトになるかどうかはわかりません。とにかく、接続の問題はよくあることなので、とにかく対処する必要があります。

だからここに私が考えている一般的な質問があります:

監視コードをルート/コントローラーに配置することは適切ですか? それとも、Ruby on Rails (RESTful ストリーミングの使用について何か見たことがあります) のような別のフレームワークは、継続的な監視に適していますか?

接続を監視するためのオーバーヘッド データ (device_ID など) をどのように格納する必要がありますか? 「接続」オブジェクトを作成するよりも、オーバーヘッド データを格納するためのより良い方法はありますか?

最後に、監視接続は最終的にタイムアウトになりますか? とにかく、中断された接続を再確立する方法はありますか (のドキュメントを読みました.onDisconnectが、カスタム コールバックは許可されませんでした)。

4

2 に答える 2

4

Firebase への永続的な接続を維持し、関連するデータが変更されたときにアクションを実行する node.js サーバーをいくつか作成しました。すごいと思います。Firebase API はサーバーとクライアントで実質的に同一であるため、通常どおりデータをサブスクライブできますが、(オプションで) 認証キーを提供して、DB 全体への完全なアクセス/制御を行うこともできます。

Firebase = require("firebase")
ref = new Firebase("https://<my firebase>.firebaseio.com")
ref.auth(<my key>)

ref.child("smoke-status").on("value", function(snap) {
  if (snap.val() == "FIRE") {
    // send email
  }
})
于 2014-08-09T03:55:47.990 に答える
0

Firebase は接続を使用します。接続を開き、ルート内で設定した URL をリッスンします。アクションをトリガーするデバイスと通知が必要なデバイスから接続を開く必要があります。

おそらくあなたが探しているのはFirebase.goOnline()Firebase.goOffline()チェックアウトのドキュメントです

アクションをトリガーするデバイスはgoOnline、アクションが発生したときに Firebase を更新できます。

クライアント側では、クライアントが更新をリッスンしているためオプションが制限されており、接続が開いている間のみ実行できます。妥協しgoOnlineて、20 秒間 5 分ごとに更新を収集することができます。

于 2014-07-28T23:19:12.257 に答える