2010-03-10 2 views
9

Ho bisogno di un server per inviare e ricevere messaggi XMPP dai client Android che eseguono un gioco multiplayer che sto scrivendo. Ho scelto XMPP perché non desidero eseguire il polling lungo e Socket può essere un problema sulla rete cellulare (i carrier potrebbero bloccarli).Server XMPP semplicissimo o consiglio per un componente Openfire personalizzato semplice

Ho guardato allo OpenFire mentre suona stupendo, non ho bisogno di un pannello di amministrazione Chat vocale, Chat room ecc. Sembra molto pesante e orientato verso una soluzione di chat per le aziende quando tutto ciò di cui ho bisogno è far corrispondere i giocatori e passare le loro mosse a vicenda registrando un punteggio alla fine. C'è una versione ridotta di OpenFire, quindi posso semplicemente registrare un componente che servirà tutte le richieste? Per quanto riguarda l'adattamento con openfire, non riesco a trovare un chiaro esempio di aggiunta di un componente personalizzato per eseguire un'attività simile.

Quello che mi serve è una libreria o un server semplice esistente su cui posso eseguire e registrare il mio listener di messaggi personalizzati. Devo solo essere in grado di soddisfare qualsiasi richiesta in arrivo e rispondere in modo appropriato. Spero di non dover scrivere la gestione dei thread in quanto quel problema è comune a un tipico server di chat ma ho bisogno di scrivere il codice per interpretare e rispondere ai messaggi inviati.

Spero che questo abbia senso, chiunque abbia scritto un tale codice server mi piacerebbe un esempio. Per quelli di voi che non l'hanno provato, ma avete un'idea di come avreste iniziato a fare il chip per favore! Più dettagli, meglio è.

Grazie in anticipo,

Gav

+0

Il server deve essere solo java? Hai preso AMQP in considerazione? – clyfe

risposta

7

È possibile utilizzare quasi tutti i server XMPP; So che Openfire funzionerà, o ho anche recentemente usato Prosody che è molto leggero e facile da installare (su Linux).

Quello che vuoi è un componente autonomo che comunica con il tuo server XMPP (e quindi può raggiungere i tuoi utenti) usando lo XMPP component protocol. Ecco dove si trova l'intelligenza del gioco.

Vedere la mia risposta precedente a una domanda molto simile per maggiori dettagli:
XMPP C# Interaction

Un altro ottimo posto per cercare informazioni vengono nulla scritto da Jack Moffitt, che ha creato chesspark.com (dal acquistata da chess.com così non disponibile) — un sito che corrispondeva agli utenti di scacchi e ai giochi controllati tramite XMPP.

Vedi questo post del blog come un inizio:
http://metajack.im/2008/11/21/chesspark_design_details_part_1_why_xmpp/

1

Si dovrebbe essere in grado di realizzare questo con OpenFire (o altri server XMPP), fuori dalla scatola se supportano PubSub. Non sono sicuro delle specifiche delle tue esigenze, ma penserei che Personal Eventing Protocol o il suo superset PubSub dovrebbero essere in grado di gestire il tuo caso d'uso. OpenFire supporta entrambi questi protocolli.

Se questi non supportano il tuo caso d'uso, allora uno custom plugin è abbastanza facile da scrivere.

Per quanto riguarda i pesi massimi o il peso ridotto, a meno che non si disponga di un ambiente specificamente piccolo per l'esecuzione del server, dubito che sarà importante. Semplicemente non userete molte delle funzionalità esistenti.

Ho usato pubub XMPP per i client per comunicare le azioni l'un l'altro in modo che gli utenti possano ottenere aggiornamenti in tempo reale di ciò su cui stanno lavorando i colleghi di un gruppo.

+0

Ah, quindi basta eseguire un server OpenFire immediatamente e sulla stessa macchina eseguire un client 'server di giochi @' e chiedere ai giocatori di inviare messaggi di gioco a quel client? Questo potrebbe funzionare, è questo che intendevi? Ho bisogno di alcune informazioni centralizzate, non è solo un caso di passare il messaggio da client a client. Ad esempio il tabellone di gioco è casuale e devo accoppiare i giocatori in qualche modo. – gav

+0

No. Non ho idea di cosa intendi eseguendo un client sulla stessa macchina a cui inviare messaggi. Suppongo che il gioco sia il cliente. – Robin

+0

@Robin: ciò che intende è un client XMPP in grado di ascoltare i messaggi Openfire. –

4

Se volete un veloce, un server XMPP leggero, provare Prosody. Le altre risposte sono giuste, tuttavia, in quanto prima si desidera esaminare PubSub, quindi scrivere il proprio component prima di aggiungere funzionalità direttamente al server.