¿Soluciones para implementar un servidor de juegos de dúplex completo?

7

Estoy diseñando un servidor de juegos que se usaría para terminales Android. He estado buscando productos o marcos para usar para comunicación de socket bidireccional pero no he encontrado nada que valga la pena mencionar.

Simplemente, quiero implementar la arquitectura a continuación:

En otras palabras, una conexión TCP del cliente al servidor y otra del servidor al cliente, para evitar tener que estar siempre conectado.

Para ser claro, mi objetivo principal es que el servidor pueda enviar datos al cliente , sin que el cliente tenga Para solicitarlo explícitamente. no quiero que el cliente tenga que sondear el servidor para ver si hay nuevos datos.

¿Qué combinación de estrategias de diseño, protocolos de red y / o productos o marcos (si corresponde) sería apropiada para implementar esta arquitectura?

    
pregunta A.Quiroga 01.11.2011 - 11:39

1 respuesta

8

El problema es que el cliente a menudo estará detrás de un NAT / firewall, lo que significa que el servidor no puede iniciar una conexión TCP con el cliente, porque el cliente no tiene una dirección IP enrutable globalmente y / o porque el firewall bloqueará los paquetes TCP entrantes inesperados que vienen del servidor.

Eso significa que cualquier conexión TCP deberá iniciarse desde el lado del cliente. Una vez hecho esto, tiene la opción de dejar la conexión TCP abierta indefinidamente (lo que no quiere hacer) o cerrar la conexión TCP una vez que se haya atendido cualquier negocio inmediato (pero eso significa que el cliente tendrá que conectarse) otra vez más tarde para ver si más actualizaciones han llegado mientras tanto, lo cual es una encuesta, lo que tampoco desea hacer).

Así que estás un poco atascado. La única solución posible en la que puedo pensar es configurar una serie de servidores proxy que no estén detrás de firewalls / NAT y que sus clientes Android se conecten a ellos de forma persistente. Luego, los servidores proxy pueden reenviar solicitudes a su servidor principal, y como usted controla los servidores proxy, puede asegurarse de que el servidor pueda conectarse de nuevo a ellos según sea necesario. Si tienes suerte, alguien más ya ha configurado un sistema como este y simplemente puedes usarlo ... quizás esto hará lo que quieras.

    
respondido por el Jeremy Friesner 05.11.2011 - 17:34

Lea otras preguntas en las etiquetas