检测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