在當前的Firebase產品中是否存在可檢測服務器連接是否丟失和/或重新獲得的策略?檢測Firebase連接是否丟失/重新獲得
我正在考慮一些移動設備的離線意外情況,我希望有一個可靠的方法來確定Firebase數據層何時可用。
在當前的Firebase產品中是否存在可檢測服務器連接是否丟失和/或重新獲得的策略?檢測Firebase連接是否丟失/重新獲得
我正在考慮一些移動設備的離線意外情況,我希望有一個可靠的方法來確定Firebase數據層何時可用。
這是一個常用的功能,我們剛剛發佈了一個API更新,讓你這樣做!
var firebaseRef = new Firebase('http://INSTANCE.firebaseio.com');
firebaseRef.child('.info/connected').on('value', function(connectedSnap) {
if (connectedSnap.val() === true) {
/* we're connected! */
} else {
/* we're disconnected! */
}
});
完整的文檔可在https://firebase.google.com/docs/database/web/offline-capabilities。
更新: 對於許多與在場相關的功能,它對於客戶知道它何時在線或離線很有用。 Firebase實時數據庫客戶端在/.info/connected中提供了一個特殊位置,每當客戶端的連接狀態發生更改時,該位置都會更新。這裏是一個例子:
DatabaseReference connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected");
connectedRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
boolean connected = snapshot.getValue(Boolean.class);
if (connected) {
System.out.println("connected");
} else {
System.out.println("not connected");
}
}
@Override
public void onCancelled(DatabaseError error) {
System.err.println("Listener was cancelled");
}
});
您好,我一直在嘗試將Firebase添加到我的項目中,並且始終獲得「未連接」。任何想法可能是錯誤的? – 2017-01-17 10:08:51
同樣在這裏。有什麼建議麼 ? – 2017-04-20 06:04:49
這是對於Android平臺 – 2017-08-08 15:05:41
我想這在過去幾個月發生了變化。目前,該指令是在這裏: https://firebase.google.com/docs/database/web/offline-capabilities
在求和:
var presenceRef = firebase.database().ref("disconnectmessage");
// Write a string when this client loses connection
presenceRef.onDisconnect().set("I disconnected!");
和:
var connectedRef = firebase.database().ref(".info/connected");
connectedRef.on("value", function(snap) {
if (snap.val() === true) {
alert("connected");
} else {
alert("not connected");
}
});
我承認我不知道了很多關於引用是如何設置,還是什麼這意味着(你是讓他們變得無所事事,還是必須事先創建它們?)或者其中哪一個會觸發服務器上的某些內容,而不是前端上的某些內容,但是如果鏈接仍然是最新的當你讀到這個,一個閱讀可能會有所幫助。
爲Android則只需稱爲單一的功能使用戶下線onDisconnect()
我在用戶需要下線,如果自動網絡連接丟失或用戶從Internet斷開我的聊天應用程序的一個這樣做
DatabaseReference presenceRef = FirebaseDatabase.getInstance().getReference("USERS/24/online_status");
presenceRef.onDisconnect().setValue(0);
在從網絡中斷開這裏我做一個ID爲在火力24的用戶online_status
0。
getReference("USERS/24/online_status")
是您需要在離線/在線更新值的路徑。
注意瞭解它是火力點需要時間周圍2-10分鐘來執行onDisconnect()函數。
邁克爾,非常感謝。你的團隊似乎總是領先一步。 – Kato 2012-07-05 20:25:01
另一個問題是,當你真的想要連接保持連接,但你的服務器關閉了,而不是試圖請求一個新的連接,它只是反覆嘗試重新連接到'下'服務器。 :( – 2013-09-11 19:55:27
案例:http://screencast.com/t/ByFTXdJP6c – 2013-09-25 15:45:03