Edit: La réponse est d'utiliser la base de données en temps réel de Firebase.

J'ai écrit une bibliothèque pour la personne suivante.

https://github.com/flipflopapp/turnbased-games-with-firebase

- Question -

J'implémente un jeu d'échecs à deux joueurs (www.halfchess.com) et j'envisage d'utiliser la messagerie Firebase (au lieu d'utiliser des sockets pour créer des salles et des matchs à deux joueurs). Le jeu impliquerait l'envoi de 60 à 100 mouvements d'échecs sous forme de messages entre deux appareils en deux à trois minutes (cela peut être Android ou iOS). Mon serveur nodejs aurait un code permettant la messagerie d'appareil à appareil (réception d'un joueur et envoi à l'autre).

Je ne peux pas utiliser les services de jeux Google car je n'ai pas implémenté de connexion Google dans mon application (je prévois uniquement de conserver la connexion Facebook). Les avantages de l'utilisation de Firebase (par rapport aux sockets) sont que je devrai écrire beaucoup moins de code (reconnexions, etc.) et que cela prendrait en charge les problèmes d'évolutivité.

Mes questions sont: -

(1) Y aura-t-il des problèmes lorsque les utilisateurs qui jouent les uns contre les autres sont sur deux appareils iOS (au lieu d'Android)? (comme une latence plus élevée)

(2) Si un utilisateur change d'emplacement physiquement et qu'un message contenant un coup d'échecs n'est pas livré, quand sera-t-il réessayé?

(3) Pour une partie d'échecs rapide, la latence sera-t-elle gérable? Cela équivaut à 8 à 10 fois la vitesse d'une conversation normale.

Pendant que je lis plus sur le sujet, peut-être que quelqu'un qui a déjà expérimenté peut commenter.

3
flipflopapp 24 janv. 2017 à 22:21

3 réponses

Au lieu de demander à l'autre joueur d'envoyer un message au client, pourquoi ne pas simplement demander au client d'afficher un message basé sur ce qui se passe dans le jeu? Cela semble être une solution plus simple pour vous, car la seule chose qui doit être envoyée est le déménagement réel, et vous pouvez en profiter si vous en avez besoin.

0
Lauren Hinch 24 janv. 2017 à 19:25

Je suis sûr que les réponses ci-dessus fonctionneront, mais j'avais du mal à les faire fonctionner. C'est ce qui a finalement fonctionné pour moi et mon application de chat Firebase!

Espérons que cela aidera certaines personnes.

J'ai pu ajouter une partie d'échecs à mon application de chat Firebase et, tout ce que j'ai utilisé était une iframe! Cependant, cela n'a pas fonctionné la première fois car tout ce que j'ai fait a été d'ajouter le codage iframe à mon application.

C'est ainsi que j'ai fait fonctionner mon iframe dans une application Firebase ...

Tout d'abord, changez le répertoire (cd) dans le dossier "public" de votre application de chat (où vous exécuteriez généralement la commande "firebase deploy") et ajoutez votre iframe au document "index.html" qui s'y trouve. Utilisez cette adresse pour l'URL source de votre iframe (src) ...

src = "échecs / index.html"

  • Cela ne fonctionnera pas correctement si vous n'incluez pas le nom de la page "index.html"!

Ensuite, j'ai créé un nouveau dossier nommé "chess" dans le même répertoire public et j'y ai ajouté le doc "index.html" du jeu d'échecs et ses dépendances (js, css, images ... etc).

Enfin, mais pas en location, ouvrez un terminal dans le même dossier «public» et exécutez «firebase deploy» pour télécharger le tout sur votre compte et console Firebase.

Terminé!

Je suis à peu près sûr que l'inclusion de la documentation de votre application d'échecs dans votre application Firebase est ce qui a finalement permis à l'iframe de fonctionner. J'ai également enveloppé l'iframe avec quelques balises «div», mais je ne suis pas sûr que cela ait fait une différence.

  • N'hésitez pas à venir jeter un coup d'œil, mais vous devrez vous connecter avec Google pour y accéder!

  • Après cela, faites un clic droit n'importe où sur la page et sélectionnez "Afficher la source" pour voir le code. À votre santé!

https://friendly-chat-b2d6a.firebaseapp.com/

1
Eric Payne 4 mars 2017 à 05:18

Firebase Cloud Messaging n'est pas destiné à un type d'utilisation, et en plus d'un délai de livraison non garanti (certaines recherches de 2013 - 2014 affiche plus de 1 seconde par message en moyenne), FCM impliquera probablement throttling dans un tel cas d'utilisation.

Voir aussi ce message SO

1
Community 23 mai 2017 à 12:25