【问题标题】:Does Firebase have a timeout policy for write operations?Firebase 是否有写入操作的超时策略?
【发布时间】:2016-04-21 22:13:29
【问题描述】:

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

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

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

【问题讨论】:

    标签: firebase firebase-realtime-database


    【解决方案1】:

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

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

    当客户端和服务器之间的连接以某种方式丢失时,客户端将尝试重新建立连接。它在这里使用指数回退,因此最初它会频繁尝试重新连接,然后逐渐减少。

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

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

    【讨论】:

      猜你喜欢
      • 2022-01-15
      • 2021-12-15
      • 2019-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-06
      • 2018-03-30
      • 1970-01-01
      相关资源
      最近更新 更多