检测Firebase连接是否丢失/重新获得

在当前的Firebase产品中是否有一种策略能够检测服务器连接是否丢失和/或重新获得?

我正在考虑一些针对移动设备的离线意外情况,我希望有一个可靠的方法来确定Firebase数据层何时可用。

这是一个普遍要求的function,我们刚刚发布了一个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获取; 。

更新:对于许多与在场相关的function,客户端知道在线或离线时很有用。 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"); } }); 

我想这在过去的几个月里发生了变化。 目前说明如下: 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"); } }); 

我会承认,我不太了解如何设置引用,或者这意味着什么(你是用空气制造的,还是必须事先创build它们),或者哪一个会触发某些东西在服务器上,而不是在前端的东西,但如果链接仍然是最新的,当你读这个,多一点阅读可能会有所帮助。