Firebase 是否有写入操作的超时策略?

Does Firebase have a timeout policy for write operations?

setValue( ) 将数据保存到 Firebase。如果连接非常非常慢会发生什么。保存数据有超时限制吗?如果它确实超时,它会重试吗?如果重试,重试多少次?

另外,读取方法onDataChange(DataSnapshot snapshot)和更新方法是否超时?

有没有办法设置您自己的超时限制?

当客户端第一次连接到 Firebase 时(因此当它执行第一个 new Firebase(...) 时,它会建立一个到服务器的 WebSocket 连接。之后所有数据都通过该 pre-established 连接传输。

当您调用 setValue() 或其他写入操作时,命令将通过打开的套接字发送到服务器。当客户端添加监听器(使用 addValueEventListener() 或类似的)时,服务器将通过打开的套接字向您的客户端发送更新。由于没有建立连接,time-outs 在这里没有真正发挥作用。

当客户端和服务器之间的连接因某种原因丢失时,客户端将尝试re-establish 连接。它在这里使用指数 back-off,因此最初它经常尝试重新连接并逐渐减少频率。

虽然没有与服务器的连接,但客户端将继续提供已从其内存(或 on-disk 如果启用了磁盘持久性)缓存中接收到的所有数据。来自客户端的任何写操作都将排队等待发送到服务器。本地事件(触发例如您的 onDataChange() 方法)将立即触发,即使客户端未连接到服务器。

这涵盖了很多方面。如果您想了解更多有关其工作原理的信息,最好的办法是启用调试日志记录(Android 客户端中的 Firebase.getDefaultConfig().setLogLevel(Level.DEBUG))并检查当您断开网络连接时日志记录输出中显示的内容。它很有教育意义,会比我在这里回答更多的问题。