2013-05-11 24 views
8

Tôi muốn ngắt kết nối ổ cắm Firebase mà không làm mới hoặc đóng trang, nhưng làm cách nào để thực hiện điều đó?Ngắt kết nối ổ cắm Firebase mà không cần làm mới hoặc đóng trang

Có phương pháp nào như socket.disconnect() hoặc socket.close() tôi có thể sử dụng không? Tôi vừa tìm thấy phương thức socket.onDisconnect().

+3

Vấn đề thực tế bạn đang cố giải quyết là gì? – Kato

+0

@Kato một trường hợp sử dụng rõ ràng dường như phù hợp với câu hỏi, trong một ứng dụng một trang, đóng kết nối Firebase để tránh không cần sử dụng băng thông sau khi người dùng đã điều hướng khỏi phần của trang web sử dụng Firebase. –

Trả lời

-17

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

Bạn có thể ngắt kết nối bằng cách sử dụng dataRef.unauth().

+1

Cảm ơn bạn đã trả lời! Nhưng tôi đã không sử dụng dataRef.auth() Vì vậy, có vẻ như dataRef.unauth() không hoạt động. – zhuhan1236

+4

Điều này không chính xác. Unauth sẽ không đóng websocket. –

20

Hỗ trợ thêm Firebase gần đây cho hai phương pháp tĩnh mới cho từng khách hàng, Firebase.goOffline()Firebase.goOnline(), cho phép bạn ngắt kết nối và kết nối lại thủ công trong ứng dụng của mình.

Từ https://www.firebase.com/docs/javascript/firebase/gooffline.html:

thủ ngắt kết nối khách hàng căn cứ hỏa lực từ máy chủ và vô hiệu hóa nối lại tự động.

Máy khách Firebase tự động duy trì kết nối liên tục đến máy chủ Firebase, máy chủ sẽ vẫn hoạt động vô thời hạn và kết nối lại khi bị ngắt kết nối. Tuy nhiên, các phương thức goOffline() và goOnline() có thể được sử dụng để điều khiển kết nối máy khách theo cách thủ công trong các trường hợp trong đó kết nối liên tục là không mong muốn.

Khi ngoại tuyến, ứng dụng khách Firebase sẽ không nhận được bản cập nhật dữ liệu từ máy chủ nữa. Tuy nhiên, tất cả các hoạt động Firebase được thực hiện cục bộ sẽ tiếp tục kích hoạt sự kiện ngay lập tức, cho phép ứng dụng của bạn tiếp tục hoạt động bình thường. Ngoài ra, mỗi thao tác được thực hiện cục bộ sẽ tự động được xếp hàng đợi và thử lại khi kết nối lại với máy chủ Firebase.

Để kết nối lại với máy chủ Firebase và bắt đầu nhận sự kiện từ xa, xem goOnline(). Sau khi kết nối được thiết lập lại, ứng dụng Firebase sẽ truyền dữ liệu thích hợp và kích hoạt sự kiện thích hợp để khách hàng của bạn "tự động khởi động".

Lưu ý: Việc gọi phương thức này sẽ ảnh hưởng đến tất cả các kết nối Firebase.

Xem Firebase.goOffline()Firebase.goOnline() để biết thêm chi tiết.

+0

trong khi nó sẽ ngừng sử dụng ổ cắm nó không đóng nó. Để chứng minh điều này, chỉ cần thử sử dụng nó với nút. Sau khi thực hiện bất kỳ giao dịch nào, quy trình nút sẽ tiếp tục sau khi chạy goOffline. Quá xấu khi bạn đang sử dụng một cái gì đó như Lambda đòi hỏi một quá trình thoát bình thường để kích hoạt cuộc gọi trở lại. –

Các vấn đề liên quan