如果超时或无法访问服务器,Fire base 不会调用 onCancelled

Posted

技术标签:

【中文标题】如果超时或无法访问服务器,Fire base 不会调用 onCancelled【英文标题】:Fire base not call onCancelled if timeout or not able to access server 【发布时间】:2014-10-11 01:58:42 【问题描述】:

我在使用 firebase 时发现并发出 firebase 在超时或无法连接到服务器时不发送错误的问题。在这种情况下,我们无法向用户提供正确的信息是什么问题。

Firebase 开发人员必须处理这种非常常见的用例。有人遇到过这个问题吗?

.addListenerForSingleValueEvent(new ValueEventListener() 

            @Override
            public void onDataChange(DataSnapshot data) 
            

            @Override
            public void onCancelled(FirebaseError arg0) 

            

【问题讨论】:

【参考方案1】:

利用.info/connected 监控连接状态。 Firebase 在离线时工作,并且您的 onCancelled 事件不会被触发,因为它仍在等待连接恢复以便可以传递消息。

Firebase 是一个实时同步平台。如果没有任何 Internet 访问,您将无法保持数据同步(如何协调本地和远程?)。所以你需要利用磁盘持久性(ios 上的测试版)或者至少有一个初始连接来让事情发生。查看offline capabilities 了解所有这些主题的详细信息。

【讨论】:

以上是关于如果超时或无法访问服务器,Fire base 不会调用 onCancelled的主要内容,如果未能解决你的问题,请参考以下文章

ping 192.168.1.1 请求超时或无法访问目标主机是怎么回事

如何在 Fire Base 中使用完成处理程序

无法从本地主机访问 AWS EC2 服务器(卷曲超时)

如果未授予/拒绝访问,则 navigator.geolocation.getCurrentPosition 超时

频繁“发生网络错误(如超时、连接中断或无法访问主机)。”使用 Firebase

使用@angular/fire@6.0.3 无法访问firebase.firestore.FieldValue.serverTimestamp()