2013-05-11 17 views
8

Firebaseソケットを切断したり、ページを閉じることなく切断したいのですが、その方法は?リフレッシュせずにFirebaseソケットを切断するか、ページを閉じる

socket.disconnect()やsocket.close()などのメソッドはありますか? socket.onDisconnect()メソッドが見つかりました。

+3

あなたが解決しようとしている実際の問題は何ですか? – Kato

+0

@Katoの質問に適合すると思われる明らかなユースケースは、Firebaseを使用するサイトの部分からユーザが離れた後に、帯域幅を不必要に使用することを避けるためにFirebase接続を閉じる単一ページアプリケーションです。 –

答えて

-17

var dataRef =新しいFirebase( "https://SampleChat.firebaseio-demo.com/");

dataRef.unauth()を使用して切断できます。

+1

あなたの答えをありがとう!しかし、私はdataRef.auth()を使用しなかったので、dataRef.unauth()は機能しません。 – zhuhan1236

+4

これは正しくありません。 UnauthはWebSocketを閉じません。 –

20

Firebaseは最近、各クライアントに2つの新しい静的メソッド(Firebase.goOffline()Firebase.goOnline())を追加しました。これにより、アプリケーションで手動で切断して再接続することができます。 https://www.firebase.com/docs/javascript/firebase/gooffline.htmlから

手動でサーバーからFirebaseクライアントを切断し、 自動再接続を無効にします。

Firebaseクライアントは自動的にFireboxサーバ への永続的な接続を維持します。Firebaseサーバは無期限にアクティブのままであり、切断された場合には に再接続します。ただし、持続接続が望ましくない場合には、goOffline()およびgoOnline() メソッドを使用して、クライアント接続を手動で制御することができます( )。

オフライン中に、Firebaseクライアントはサーバーからデータ更新 を受け取らなくなります。ただし、ローカルで実行されたすべてのFirebase操作では、すぐにイベントが発生し、アプリケーションは に正常に動作し続けます。さらに、 ローカルで実行された各操作は、自動的にキューに入れられ、 Firebaseサーバーへの再接続時に再試行されます。

Firebaseサーバに再接続してリモートイベントを受信するには、 go go()を参照してください。接続が再確立されると、Firebase クライアントは適切なデータを送信し、適切な イベントを発生させ、クライアントが自動的に「追いつく」ようにします。

注:この方法を呼び出すと、すべてのFirebase接続に影響します。

詳細については、Firebase.goOffline()およびFirebase.goOnline()を参照してください。

+0

ソケットを使用しなくても、ソケットを閉じることはありません。これを実証するには、ノードでそれを使ってみてください。トランザクションを実行した後、ノードプロセスはgoOfflineを実行した後も継続します。リターンコールを戻すために通常のプロセス終了を必要とするLambdaのようなものを使用しているときは、あまりにも悪いです。 –

関連する問題