android - firebase 监听器实际上是如何工作的?

标签 android firebase firebase-realtime-database

我想知道在 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/

相关文章:

android - 在 Android 范围内的 Firetore 中查询 GeoHashes

javascript - 如何在函数中将数据发送到firebase数据库

android - 将 List<Model> 传递给嵌套适配器时为 null

android - Runnable 在 postDelayed 的延迟后长时间执行

javascript - 如何使用云函数将数据写入云Firestore

android - 如何更改firebase中的电子邮件验证邮件的内容?

android - 如何开始学习Android内核开发

iphone - 绘制多个相同对象的最有效方法?

java - 如何获取 firebase 数据库中的特定键并比较它们是否相同?

java - Firebase 检索数组名称和带有身份验证的数组