Firebase实时数据库支持同时连接吗?

3

我的应用在后台运行。如果应用在后台运行,是否仍然与实时数据库同时连接?或者如果此应用程序暂停使用实时数据库一段时间,是否不算同时连接?

如果无论如何都计算连接数,那我只能获得10万个用户吗?

2个回答

3
我会按顺序回答您的三个问题。
Firebase数据库库管理后端数据库的连接,该连接从应用启动时开始计数,这将耗费您的同时连接数。当此限制达到最大连接限制100k时,任何新连接都将被拒绝,直到现有连接通过关闭应用程序或应用程序在指定的超时后离线或通过调用FirebaseDatabase.getInstance().goOffline() 强制关闭DB连接为止。但是,您可以通过使用FirebaseDatabase.getInstance().getReference(".info/connected")中的监听器来了解给定客户端是否已连接,但该方法仅工作于本地,而且不会显式连接到FirebaseDatabase云实例。请阅读更多here
一旦您实现了上述连接侦听器,您将看到SDK以动态方式管理此连接,如果没有附加侦听器并且在应用程序中没有进行.setValue()之类的数据库操作,在最后60秒中,则会自动断开连接。但是,ValueEventListners的存在将覆盖此操作,并确保与DB的持续连接性。同样,可以通过显式调用FirebaseDatabase.getInstance().goOffline()来覆盖此设置,并切断连接。
关于100k同时用户的最大限制,请参见Firebase Plans。如果您越过此限制并且需要扩展以增加限制,可以明确要求Google Firebase Team提供support,他们将根据情况处理这个问题,以确保您的应用程序可以在需要时按需扩展。此限制与您的应用程序的总用户数不同,因为您的用户并不会同时连接。我们建议您监视峰值同时数据库连接,并在需要时升级或添加更多数据库。

在Android上,Firebase自动管理连接状态以减少带宽和电池使用。当客户端没有活动的监听器、没有待处理的写入或断开连接操作,并且没有通过goOffline方法明确断开连接时,Firebase会在60秒的不活动时间后关闭连接。 - Gowrav

3
只要你的listener处于活动状态,你的应用程序就与实时数据库相连接。如果你想停止监听,根据你的需求和活动周期,你需要删除监听器。
对于Android,你可以在onDestroy()方法中使用以下代码。
databaseReference.removeEventListener(valueEventListener);

希望这有所帮助。

谢谢您的帮助。我的应用程序没有任何监听器,那么不计算同时连接吗?即使在后台运行? - john lee
如果你的应用程序没有以任何方式监听来自数据库的 DatabaseReference,那么你就不必担心。 - Alex Mamo
@AlexMamo 很好的回答,但缺少一些细节。当没有活动监听器和5分钟内没有写入时,Firebase客户端会自动断开连接。当您附加新的侦听器或写入数据时,它将自动重新连接。除此之外:更惯用的删除侦听器的位置是 onPause()onStop(),因为它们在活动生命周期中更早发生。 - Frank van Puffelen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接