如何在Firebase中计算连接

时间:2013-10-19 13:27:24

标签: firebase

如何计算连接?

我们假设我有一个网络应用程序,其中一个负载向所有连接的客户端发送消息,并且假设我有5个连接的客户端。这是否意味着只要具有Web应用程序的浏览器选项卡打开,它将计为1个连接,这意味着我将有6个并发连接,并且这将计入您在定价页面中定义为“连接”的内容?

如果没有,请说明您如何计算“连接”。感谢

1 个答案:

答案 0 :(得分:37)

自从我浏览了thinkster.io angular + firebase教程后,这个问题一直困扰着我,我看到我的firebase analytics选项卡显示了6个峰值并发,尽管我只记得打开一个页面。我回头看了一下代码,并认为这可能与教程如何为你的firebase中的每个位置创建一个新的Firebase(url)有关。

我想测试创建新Firebase(url)与获取根参考然后访问.child()位置之间的区别。我的理论是新的Firebase(url)每次都会创建一个新的连接,而.child()会重新使用现有的连接。

设置

  • 创建了两个新的火灾基地,每个火灾基地都有相同的数据
  • 使用yeoman设置angularjs项目
  • 包含angularfire

代码

为简单起见,我只是将所有内容都放在生成代码的主控制器中。

要测试使用新Firebase()创建的连接,我执行了以下操作:

$scope.fb_root = $firebase(new Firebase(FBURL_NEW));
$scope.fb_root_apps = $firebase(new Firebase(FBURL_NEW + '/apps'));
$scope.fb_root_someApp = $firebase(new Firebase(FBURL_NEW + '/apps/someApp'));
$scope.fb_root_users = $firebase(new Firebase(FBURL_NEW + '/users'));
$scope.fb_root_mike = $firebase(new Firebase(FBURL_NEW + '/users/mike'));

要测试使用ref。$ child()创建的连接,我执行了以下操作:

$scope.fb_child = $firebase(new Firebase(FBURL_CHILD));
$scope.fb_child_apps = $scope.fb_child.$child("apps");
$scope.fb_child_someApp = $scope.fb_child_apps.$child("someApp");
$scope.fb_child_users = $scope.fb_child.$child("users");
$scope.fb_child_mike = $scope.fb_child_users.$child("mike");

然后我在视图中绑定了这些对象,以便我可以看到它们,我通过firebase forge更新数据并在我的应用程序上实时观看数据更新。

结果

我将本地应用程序打开了17个浏览器标签,希望大量标签会夸大连接方法之间的差异。

我发现每个选项卡只为每个firebase db打开一个单独的Web套接字连接回firebase。因此,在测试结束时,两种方法都产生了17个连接的相同峰值计数。

结论

通过这个简单的测试,我认为Firebase JS库在管理连接方面做得很好是安全的。

无论您的代码多次调用新的Firebase(),或通过.child()引用子位置,只要您的计量涉及到库,库就只会创建一个连接。只要您的应用程序处于打开状态,该连接就会保持在线状态。

所以在你的例子中 - 是的,我相信你会看到6个并发连接,1个用于发送消息的应用程序,5个用于接收消息的应用程序。

更新

值得一提的另一件事是,Firebase根据当月使用率的第95个百分点来衡量付费计划的连接。这列在其定价页面@ https://www.firebase.com/pricing.html

的常见问题部分中

更新11月3日 - 16日:Firebase不再显示基于95%来衡量连接。相反,第101个并发连接被拒绝。

https://www.firebase.com/pricing.html

  

我们所有的计划都对数据库连接的数量有严格的限制。   我们的免费和星火计划限制在100个。限制不可以   提高。所有其他计划都有10,000个数据库的礼节限制   连接。这可以删除永久允许无限制   如果您通过firebase-support@google.com向我们发送电子邮件,请联系   我们强加这种礼貌限制的原因是为了防止滥用和确保   我们准备好处理我们最大的客户。请联系   我们至少提前24小时,所以我们可以解除这个限制并确保   我们有足够的容量满足您的需求。