我想知道在 Android 上,当您向数据库添加监听器时,底层的实际机制是如何工作的。只是更频繁地拉动还是其他特殊情况?
更新: 为了更清楚,我理解什么是监听器,但我的意思是“监听”方案是如何工作的,客户端(Android)如何知道服务器上的数据发生了变化。只是周期性的拉动吗? (并且 Firebase 工程师已经做了艰苦的工作来解决这个问题并让我们轻松完成)。
看起来 firebase 不是开源的。
// Attach an listener to read the data at our posts reference
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
System.out.println(snapshot.getValue());
}
@Override
public void onCancelled(FirebaseError firebaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});
最佳答案
免责声明:这是在撰写本文时对事物运作方式的简化描述。当您阅读它时,情况可能已经改变。
当您的应用连接到 Firebase 数据库时,它会打开从设备到 Firebase 服务器的网络套接字连接。此连接在您的应用程序的整个生命周期内保持打开状态,或者直到您调用 goOffline()
。
当您附加一个监听器时,客户端会将位置(和潜在的查询参数)发送到服务器。服务器将该监听器添加到所有已连接客户端的所有监听器的列表中。然后它还会发回该监听器的初始数据。
每当向数据库提交写操作时,服务器都会扫描监听器。对于每个相关的监听器,服务器都会通过打开的网络套接字向客户端发送更新。
关于android - firebase 监听器实际上是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38279329/