2013-05-11 13 views
8

Chcę odłączyć gniazdo firebase bez odświeżania lub zamykania strony, ale jak to zrobić?Odłączanie gniazda firebase bez odświeżania lub zamykania strony

Czy istnieje metoda, jak socket.disconnect() lub socket.close() mogę używać? Właśnie znalazłem metodę socket.onDisconnect().

+3

Jaki jest faktyczny problem, który próbujesz rozwiązać? – Kato

+0

@Kato oczywistym przypadkiem użycia, który wydaje się pasować do tego problemu, byłoby zamknięcie połączenia Firebase w aplikacji jednostronicowej, aby uniknąć niepotrzebnego korzystania z przepustowości po przejściu użytkownika z części witryny korzystającej z Firebase. –

Odpowiedz

-17

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

Można odłączyć, używając dataRef.unauth().

+1

Dziękuję za odpowiedź! Ale nie korzystałem z dataRef.auth(). Wydaje się więc, że dataRef.unauth() nie działa. – zhuhan1236

+4

To nie jest poprawne. Unauth nie zamknie websocket. –

20

Firebase ostatnio dodał obsługę dwóch nowych metod statycznych dla każdego klienta, Firebase.goOffline() i Firebase.goOnline(), które umożliwiają ręczne rozłączanie i ponowne łączenie się z aplikacją.

Od https://www.firebase.com/docs/javascript/firebase/gooffline.html:

ręcznie odłączyć Firebase klienta z serwerem i wyłączyć automatycznego ponownego łączenia.

Klient Firebase automatycznie utrzymuje stałe połączenie z serwerem Firebase o numerze , który pozostanie aktywny przez czas nieokreślony, a ponownie się połączy. Jednak metody goOffline() i goOnline() mogą być używane do ręcznego kontrolowania połączenia klienta w przypadkach, gdy połączenie trwałe jest niepożądane.

W trybie offline klient Firebase nie będzie już otrzymywać aktualizacji danych z serwera. Jednak wszystkie operacje Firebase wykonywane lokalnie będą kontynuowały natychmiastowe wywoływanie zdarzeń, dzięki czemu aplikacja będzie mogła kontynuować normalną pracę. Ponadto każda operacja wykonywana lokalnie będzie automatycznie umieszczana w kolejce i ponawiana po ponownym połączeniu z serwerem Firebase pod numerem .

Aby ponownie połączyć się z serwerem Firebase i rozpocząć odbieranie zdarzeń zdalnych, zobacz goOnline(). Po ponownym nawiązaniu połączenia klient Firebase prześle odpowiednie dane i wystrzeli odpowiednie zdarzenia, aby Twój klient "automatycznie podciął" się.

Uwaga: Wywołanie tej metody wpłynie na wszystkie połączenia Firebase.

Aby uzyskać więcej informacji, zobacz Firebase.goOffline() i Firebase.goOnline().

+0

, gdy przestanie używać gniazda, nie zamyka go. Aby to zademonstrować, po prostu spróbuj użyć go z węzłem. Po wykonaniu jakichkolwiek transakcji proces węzła będzie kontynuowany po uruchomieniu goOffline. Szkoda, gdy używasz czegoś takiego jak Lambda, które wymaga normalnego wyjścia procesu, aby wywołać zwrotne połączenie zwrotne. –

Powiązane problemy