Question Comment la connexion est calculée dans Firebase


Comment les connexions sont-elles calculées?

Supposons que je dispose d'une application Web à laquelle un utilisateur envoie un message à tous les clients connectés, et disons que j'ai 5 clients connectés. Cela signifie-t-il que tant que l'onglet du navigateur avec l'application Web est ouvert, il comptera pour 1 connexion, ce qui signifie que j'aurai 6 connexions simultanées et que cela compte pour ce que vous définissez comme "Connexion" dans la page de tarification?

Si non, veuillez expliquer comment vous calculez la "Connexion". Merci


11
2017-10-19 13:27


origine


Réponses:


Cette question m'embêtait depuis que j'ai parcouru le tutoriel thinkster.io angular + firebase et j'ai vu mon onglet analytique de firebase montrant un pic simultané de 6, même si je me souviens seulement d'avoir ouvert une page. J'ai regardé le code et j'ai pensé que cela pouvait être dû à la façon dont le tutoriel vous a créé une nouvelle Firebase (URL) pour chaque emplacement de votre base de feu.

Je voulais tester la différence entre créer une nouvelle Firebase (URL) et prendre la référence racine, puis accéder à l'emplacement .child (). Ma théorie était que la nouvelle Firebase (url) créerait une nouvelle connexion à chaque fois, tandis que .child () réutiliserait la connexion existante.

Installer

  • Création de deux nouvelles bases de données avec des données identiques
  • Configurer un projet angularjs en utilisant yeoman
  • Incendie angulaire inclus

Code

Pour simplifier, je mets tout dans le contrôleur principal du code généré.

Pour tester les connexions créées avec la nouvelle Firebase (), j'ai effectué les opérations suivantes:

$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'));

Pour tester les connexions créées avec ref. $ Child (), j'ai fait ce qui suit:

$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");

J'ai ensuite lié ces objets à mon avis pour les voir, et j'ai joué avec la mise à jour des données via ma forge Firebase et en regardant la mise à jour des données en direct sur mon application.

Résultats

J'ai ouvert mon application locale dans 17 onglets du navigateur, en espérant qu'un grand nombre d'onglets exagérerait les différences entre les méthodes de connexion.

Ce que j'ai trouvé, c'est que chaque onglet n'ouvre qu'une seule connexion de socket Web à Firebase pour chaque base de données Firebase. Donc, à la fin du test, les deux méthodes ont abouti au même nombre maximal de 17 connexions.

Conclusion

De ce simple test, je pense pouvoir affirmer que la bibliothèque Firebase JS gère bien sa connexion.

Indépendamment de votre code appelant new Firebase () à plusieurs reprises ou en référençant des emplacements enfants via .child (), la bibliothèque ne créera qu'une seule connexion en ce qui concerne votre mesure. Cette connexion restera en ligne aussi longtemps que votre application est ouverte.

Donc, dans votre exemple - oui, je crois que vous verrez 6 connexions simultanées, 1 pour l'application où quelqu'un envoie le message et 5 pour les applications recevant le message.

Mettre à jour

Une autre chose à noter est que Firebase mesure les connexions pour les plans payants sur la base du 95ème centile d'utilisation au cours du mois. Ceci est répertorié dans la section FAQ de leur page de tarification @ https://www.firebase.com/pricing.html

Mise à jour 11-mars-16: Firebase ne semble plus mesurer les connexions sur la base du 95ème%. Au lieu de cela, la 101ème connexion simultanée est refusée.

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

Tous nos plans ont une limite stricte sur le nombre de connexions à la base de données.   Nos plans Free et Spark sont limités à 100. La limite ne peut pas être   élevé. Tous les autres plans ont une limite de courtoisie de 10 000 bases de données   les liaisons. Cela peut être supprimé pour permettre de manière permanente illimité   connexions si vous nous envoyez un e-mail à firebase-support@google.com .. Le   la raison pour laquelle nous imposons cette limite de courtoisie est d'empêcher les abus et de garantir   que nous sommes prêts à prendre en charge nos plus gros clients. S'il vous plaît contactez   nous au moins 24 heures à l'avance afin que nous puissions lever cette limite et assurer   nous avons suffisamment de capacité disponible pour vos besoins.


36
2017-12-18 16:13