如何在Firebase中计算连接

如何在Firebase中计算连接,firebase,Firebase,如何计算连接 假设我有一个web应用程序,其中一个负载向所有连接的客户端发送消息,假设我有5个连接的客户端。这是否意味着只要web应用的浏览器选项卡打开,它将计为1个连接,这意味着我将有6个并发连接,这是您在定价页面中定义为“连接”的数量 如果没有,请解释如何计算“连接”。谢谢自从我浏览thinkster.io angular+firebase教程,看到firebase analytics选项卡显示峰值并发数为6时,这个问题一直困扰着我,尽管我只记得打开了一页。我回顾了代码,认为这可能与教程如何

如何计算连接

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


如果没有,请解释如何计算“连接”。谢谢

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

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

安装程序
  • 创建了两个新的Firebase,每个Firebase都有相同的数据
  • 使用yeoman设置angularjs项目
  • 夹角火
代码 为了简单起见,我只是将所有内容都放在生成代码的主控制器中

要测试使用new 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'));
$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");
要测试使用ref.$child()创建的连接,我执行了以下操作:

$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'));
$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打开一个返回firebase的web套接字连接。因此,在测试结束时,这两种方法导致17个连接的相同峰值计数

结论 通过这个简单的测试,我认为可以肯定地说Firebase JS库在管理其连接方面做得很好

无论您的代码多次调用new Firebase(),还是通过.child()引用子位置,库都只会创建一个连接。只要你的应用程序处于打开状态,该连接将保持在线状态

因此,在您的示例中-是的,我相信您将看到6个并发连接,1个用于有人发送消息的应用程序,5个用于接收消息的应用程序

更新 另一件值得一提的事情是Firebase根据当月95%的使用率来衡量付费计划的连接。这列在他们定价页面的常见问题部分@

更新日期:2016年3月11日:Firebase似乎不再以95%为基础测量连接。相反,第101个并发连接被拒绝

:

我们所有的计划对数据库连接的数量都有严格的限制。 我们的免费和Spark计划限制为100个。限制不可更改 提高。所有其他计划的礼貌限制为10000个数据库 连接。可以将其删除,以永久允许不受限制 如果您通过firebase向我们发送电子邮件,请与我们联系-support@google.com.. 这个 我们实施这一礼貌限制的原因是为了防止滥用并确保 我们准备处理我们最大的客户。请联系 至少提前24小时通知我们,以便我们可以取消此限制并确保 我们有足够的容量满足您的需要


是,如果在任何给定时间有6个浏览器选项卡(或设备)连接到Firebase,则将被视为6个连接。定价页面列出了您在任何给定时间可以同时打开的最大连接数。web应用程序不是有5个固定连接(每个客户端一个)和5个临时连接(每个请求一个)吗?如果我想让whatsapp这样的组拥有5000个用户,那么100个连接就可以了。@PratikButani,我认为只要有不超过100名用户打开群组聊天应用程序,你的应用程序就不能在后台连接到firebase以获取任何新消息,因为这将被视为连接。