2010-01-23 15 views
21

Estoy pensando en construir un juego multijugador usando GAE. Cuando el jugador A hace un movimiento, me gustaría registrar los detalles y luego dejar que el jugador B sepa sobre el movimiento.¿Puede GAE actuar como un servidor XMPP?

Pensé que podría obtener alguna biblioteca XMPP de código abierto en mi cliente y notificar presencia a mi aplicación si eso fuera posible. No me gustaría obligar al jugador a registrarse en un servicio como Google Talk, por lo que generaré jid sobre la marcha en función de la identificación de la sesión.

¡Me gustaría saber de usted!

Gracias

Respuesta

9

usted no va a ser capaz de hacer que su aplicaciones GAE un servidor XMPP, ya que puede no sockets abiertos - de este modo está restringido por la API.

Sin embargo, no necesita ejecutar un servidor xmpp para lograr lo que desea hacer. Puede utilizar las bibliotecas XMPP disponibles en la api appengine para hacer que su aplicación sea un cliente que los clientes de su juego hablen para ver la API de Python aquí: http://code.google.com/appengine/docs/python/xmpp/. No todos los clientes de su juego necesitan ser clientes de gtalk, pero necesitarán ser capaces de unirse a gtalk, que creo que la mayoría podrá.

Hay un pequeño ejemplo aquí: http://code.google.com/appengine/articles/using_xmpp.html

+6

En el ejemplo se supone que su usuario ya tiene un cliente y una identificación xmpp. Creo que OP quiere que esto funcione sin esa suposición: el juego en sí sería el cliente y generaría identificaciones anónimas. ¿Ese escenario también funcionaría? –

+2

La respuesta breve es No o Sí, pero deberá ejecutar su propio servidor xmpp fuera de GAE para crear estos identificadores xmpp anónimos, ya que el cliente de GAE no puede crear nuevos identificadores. Si eliges crear los identificadores xmpp anónimos, probablemente lo estés haciendo porque tienes un cliente personalizado y estás haciendo un túnel con tu protocolo de juego a través de xmpp, ¿verdad? Si la idea es usar GAE para alimentar el servidor xmpp que no va a funcionar debido a la regla de no-socket. Pero podría usar un servidor xmpp externo y usar GAE para hacer el motor de giro. – dar

+0

Pensé que la API de GAE podría haber admitido los comandos del servidor XMPP porque la documentación indica que el GAE puede ser [appid] @ appspot.com o [cualquier cosa] @ [id de la aplicación] .appspotchat.com. Pero después de finalmente entender el funcionamiento de XMPP, veo que GAE es solo un cliente. De lo contrario, sí XMPP se suponía que era un túnel solo para evitar la limitación de no tener sockets en GAE. Necesitaba un método para notificar a mi jugador al instante sin votación. – kasuku

3

podría ser el gasto que vale la pena 15 minutos de ver la nube de Amazon Elastic Compute (EC2) Puede implementar un servidor de la nube por cerca de 2 centavos por hora. He aquí una buena descripción http://www.youtube.com/watch?v=ZAB8wCg9MyE&feature=player_embedded

+0

Gracias. Estoy jugando con EC2 micro en este momento y funciona muy bien con ejabberd. – kasuku

+1

También GAE ahora tiene API de canal para empujes pero solo es javascript en este momento. – kasuku

Cuestiones relacionadas