2010-01-23 4 views
21

Sto pensando di creare un gioco multi-player utilizzando GAE. Quando il giocatore A fa una mossa, vorrei registrare i dettagli e poi far sapere al giocatore B della mossa.GAE può agire come un server XMPP?

Ho pensato che potrei ottenere una libreria XMPP open source nel mio client e notificare la presenza alla mia app se ciò è possibile? Non vorrei forzare il giocatore ad iscriversi a un servizio come google talk, quindi genererò jid al volo in base all'ID di sessione.

Vorrebbe sapere da voi!

Grazie

risposta

9

Non si ha intenzione di essere in grado di rendere il vostro gae APP un server XMPP, perché non si può socket aperti - In questo modo è limitato dalle API.

Tuttavia, non è necessario eseguire un server xmpp per ottenere ciò che si vuole fare. Puoi usare le librerie XMPP disponibili nella appengine api per rendere la tua app un client che i tuoi "client" di gioco parlano per vedere la API Python qui: http://code.google.com/appengine/docs/python/xmpp/. Non tutti i client di gioco devono essere client gtalk, ma dovranno essere in grado di collegarsi a gtalk, che credo sarà in grado di fare.

C'è un breve esempio qui: http://code.google.com/appengine/articles/using_xmpp.html

+6

L'esempio presuppone che l'utente abbia già un client e un ID xmpp. Penso che l'OP voglia che funzioni senza quell'ipotesi: il gioco stesso sarebbe il client e genererebbe id anonimi. Anche questo scenario funzionerebbe? –

+2

La risposta breve è No o Sì, ma dovrà eseguire il proprio server xmpp al di fuori di GAE per creare questi ID xmpp anonimi poiché il client GAE non può creare nuovi ID. Se decidi di creare gli ID anonimi di xmpp, probabilmente lo stai facendo perché hai un client personalizzato e stai canalizzando il tuo protocollo di gioco tramite xmpp, giusto? Se l'idea è di usare GAE per alimentare il server xmpp che non funzionerà a causa della regola no-socket. Ma potresti usare un server xmpp esterno e usare GAE per girare il motore. – dar

+0

Ho pensato che l'API GAE potrebbe aver supportato i comandi del server XMPP perché la documentazione indica che GAE può essere [appid] @ appspot.com o [qualsiasi cosa] @ [app-id] .appspotchat.com. Ma dopo aver finalmente capito il funzionamento di XMPP vedo che il GAE è solo un client. Altrimenti, si supponeva che XMPP fosse un tunnel solo per aggirare la limitazione di non avere socket su GAE. Avevo bisogno di un metodo per notificare immediatamente il mio lettore senza il polling. – kasuku

3

potrebbe essere spesa vale la pena di 15 minuti per guardare di Amazon Elastic Compute Cloud (EC2) È possibile distribuire un server cloud per circa 2 centesimi l'ora. Ecco una buona panoramica http://www.youtube.com/watch?v=ZAB8wCg9MyE&feature=player_embedded

+0

Grazie. Al momento sto giocando con EC2 micro e funziona perfettamente con ejabberd. – kasuku

+1

Anche GAE ora ha API canale per le push ma al momento è solo javascript. – kasuku