2010-03-10 7 views
9

J'ai besoin d'un serveur pour envoyer et recevoir des messages XMPP de clients Android exécutant un jeu multijoueur que j'écris. J'ai choisi XMPP parce que je ne veux pas interroger longtemps et Sockets peut être un problème sur le réseau cellulaire (les transporteurs peuvent les bloquer).Serveur XMPP super simple ou conseil pour un composant Openfire personnalisé simple

J'ai regardé OpenFire alors que cela semble incroyable, je n'ai pas besoin d'un panneau d'administration Voice Chat, salles de chat, etc il semble très lourd et orienté vers une solution de chat pour les entreprises quand tout ce que j'ai besoin est de faire correspondre les joueurs et passent leurs mouvements les uns aux autres en enregistrant un score à la fin. Existe-t-il une version allégée d'OpenFire pour que je puisse simplement enregistrer un composant qui servira toutes les demandes? En ce qui concerne l'adaptation avec openfire je ne peux pas trouver un exemple clair de l'ajout d'un composant personnalisé pour effectuer une tâche similaire. Ce dont j'ai besoin, c'est d'une bibliothèque ou d'un serveur simple existant sur lequel je peux lancer et enregistrer mon écouteur de message personnalisé. Je dois juste être en mesure de répondre à toute demande et répondre de manière appropriée. J'espère que je n'ai pas besoin d'écrire la gestion des threads car ce problème est commun à un serveur de discussion typique, mais j'ai besoin d'écrire le code pour interpréter et répondre aux messages envoyés.

J'espère que cela a du sens, toute personne qui a écrit un tel morceau de code de serveur j'aimerais un exemple. Pour ceux d'entre vous qui ne l'ont pas encore essayé, mais qui ont une idée de comment commencer, s'il vous plait copiez aussi! Le plus de détails le mieux.

Merci à l'avance,

Gav

+0

Le serveur doit être java uniquement? Avez-vous pris en compte AMQP? – clyfe

Répondre

7

Vous pouvez utiliser presque n'importe quel serveur XMPP; Je sais que Openfire fonctionnera, ou j'ai aussi récemment utilisé Prosody qui est très léger et facile à installer (sur Linux).

Ce que vous voulez est un composant autonome qui communique avec votre serveur XMPP (et peut ainsi atteindre vos utilisateurs) en utilisant le XMPP component protocol. C'est là que réside l'intelligence du jeu.

Voir ma précédente réponse à une question similaire pour plus de détails:
XMPP C# Interaction

Un autre lieu incontournable pour rechercher des informations est rien écrit par Jack Moffitt, qui a créé chesspark.com (depuis acheté par chess.com si non disponible) — un site qui correspondait aux utilisateurs d'échecs et aux jeux contrôlés utilisant XMPP.

Voir ce billet de blog comme début:
http://metajack.im/2008/11/21/chesspark_design_details_part_1_why_xmpp/

1

Vous devriez être en mesure d'accomplir ceci avec OpenFire (ou d'autres serveurs XMPP) de la boîte si elles prennent en charge PubSub. Pas sûr de la spécificité de vos besoins, mais je pense que Personal Eventing Protocol ou son sur-ensemble PubSub devrait être en mesure de gérer votre cas d'utilisation. OpenFire prend en charge ces deux protocoles.

Si ceux-ci ne prennent pas en charge votre cas d'utilisation, alors un custom plugin est assez facile à écrire. En ce qui concerne le poids lourd ou léger, sauf si vous avez un environnement spécifiquement petit pour l'exécution du serveur, je doute que ce soit important. Vous n'utiliserez simplement pas beaucoup des fonctionnalités qui existent. J'ai utilisé le pubsub XMPP pour que les clients puissent communiquer des actions les uns aux autres afin que les utilisateurs puissent obtenir des mises à jour en direct de ce que les collègues d'un groupe travaillent.

+0

Ah, il suffit de lancer un serveur OpenFire prêt à l'emploi et sur la même machine, lancez un client 'gameserver @' et demandez aux joueurs d'envoyer des messages de jeu à ce client. Ça pourrait marcher, c'est ce que vous vouliez dire? J'ai besoin de certaines informations centralisées. Il ne s'agit pas seulement de transmettre le message du client au client. Par exemple, le plateau de jeu est aléatoire et je dois coupler les joueurs d'une manière ou d'une autre. – gav

+0

Non. Je n'ai aucune idée de ce que vous voulez dire en exécutant un client sur la même machine pour envoyer des messages. Je suppose que le jeu est le client. – Robin

+0

@Robin - Ce qu'il veut dire, c'est un client XMPP qui peut écouter les messages Openfire. –

4

Si vous voulez un serveur XMPP rapide, léger, essayez Prosody. Les autres réponses sont bonnes, cependant, en ce que vous voulez d'abord regarder PubSub, puis en écrivant votre propre component, avant d'ajouter des fonctionnalités directement sur le serveur.