2010-10-30 38 views
2

Nous développons un jeu de navigateur Web en temps réel en ligne et nous avons choisi d'utiliser APE Server. Nous avons un système de discussion dans le jeu de notre projet précédent et nous aimerions le porter à APE. Comme nous sommes un peu nouveaux à l'APE, nous ne sommes pas sûrs du scénario qui fonctionnerait mieux ou qui ne fonctionnerait pas du tout.Ajax Push Engine (Comet) et le chat persistant - comment mettre en œuvre?

Maintenant, le chat fonctionne de la manière suivante: le chat -le dispose de 4 chambres où les utilisateurs parlent un peu certains aspects du jeu (commerce, lutte, etc.) lorsque l'utilisateur recharge la page complètement, il/elle obtient les derniers 30 messages Formulaire db (base de données) pour le salon de discussion ouvert -le chat émet des requêtes AJAX périodiques pour voir s'il y a de nouveaux messages dans les salles de conversation, mais les messages les plus récents ne sont téléchargés que pour le salon de discussion actuellement ouvert. Pour rendre les choses encore plus compliquées, nous avons séparé le chat dans des langues séparées - les utilisateurs reçoivent des messages uniquement pour la langue qui est dans leur cookie de préférences. Ils peuvent le changer à tout moment et ils recevront des messages pour l'autre langue. Maintenant que nous passons à un système entièrement basé sur AJAX sans rechargement de page, nous réduirons automatiquement les demandes pour obtenir les 30 derniers messages de la base de données.

Mais le plus difficile est - comment organiser l'enregistrement des messages en DB et l'envoi aux utilisateurs via APE?

Nous avons considéré les options suivantes: - l'utilisateur envoie un message au script PHP, il va à db, alors PHP soumet le message à l'APE via inlinepush (selon docs, inlinepush ne supporte qu'un seul canal, nous ne sommes pas assurez-vous que cela fonctionnera bien) et ensuite APE envoie le message à tous les utilisateurs (il semble que nous devions stocker sur le serveur APE également la langue préférée de l'utilisateur, de sorte que le message soit envoyé uniquement aux utilisateurs appropriés); - l'utilisateur envoie le message à APE Server et le serveur APE le transmet aux autres utilisateurs de la même langue et appelle également le script PHP pour stocker le message dans db; - l'utilisateur envoie le message à APE Server, et le serveur APE le transmet aux autres utilisateurs de la même langue et stocke le message sur la base de données en utilisant les capacités Mysql de l'APE. D'une part, nous préférons stocker des données via PHP parce que nous avons une bibliothèque d'accès db assez robuste et nous voudrions éviter de les porter sur APE et Javascript juste pour stocker des messages de chat (et nous n'avons aucune expérience avec JS côté serveur). Mais si cela vous donne de bons avantages, nous utiliserons bien entendu le Mysql de l'APE.

Aussi, nous sommes inquiets, APE sera-t-il en mesure de filtrer tous les utilisateurs selon leur langue et d'envoyer le message uniquement aux utilisateurs appropriés? Comment l'APE gère les cookies?

Les canaux basés sur les sous-domaines dans APE semblent également un peu difficiles à configurer, mais nous n'avons pas encore trouvé de meilleure alternative.

Répondre

0

Vérifiez ce lien:

http://www.ape-project.org

Il semble être un projet open source qui met en œuvre le concept de moteur PUSH AJAX.

Ils vous ont fourni le code (côté serveur et côté client). Bien qu'il semble ne pas avoir de support pour Windows ce que je regarde réellement dans mais il peut vous aider si vous en avez besoin.

Bien que la réponse semble être d'aucune utilité à la personne réelle qui a posté la question car elle est longue.

+0

Oui, c'est l'APE dont je parlais dans le message original. Nous avons également essayé socket-io, mais il y avait des bugs sérieux et des fonctionnalités non implémentées. Nous avons fini par utiliser node.js et Faye avec une authentification personnalisée - et cela a très bien fonctionné. Faye est assez léger et personnalisable. http://faye.jcoglan.com/ – JustAMartin

0

Nous avons fini par utiliser node.js et Faye avec une authentification personnalisée, et cela a très bien fonctionné. Faye est assez léger et personnalisable, pas de soucis avec une configuration de domaine compliquée. Il était également relativement facile de coder notre propre back-end SQL via PHP.

Faye