Aprendiendo tecnologías de servidor de Java, tratando de aclarar algunas cosas. Existen pocas tecnologías que permiten que las aplicaciones Java se comuniquen entre sí.¿Cómo puede el servidor enviar datos al cliente?
1) Servicios Web (REST/SOAP) a través de HTTP
2) simple post/GET usando URLConnection a través de HTTP.
3) sockets
4) RMI = sockets + serialización de objetos + Algunas Utilidades
5) Los diferentes servidores de medios como red5 = RTMP o RTMPT
Todas estas tecnologías suponen que hay un servidor aplicación y aplicación del cliente. La aplicación del cliente conoce la dirección del servidor y debe ser el iniciador de la llamada. Y por lo que tengo entendido, el servidor no puede enviar datos al cliente, solo puede enviar datos de vuelta como respuesta al cliente. Y es posible, si solo cambian sus roles, en este caso el servidor debería conocer la IP del cliente.
Así que me pregunto cómo funcionan los juegos en red? ¿Es posible abrir la conexión y el intercambio de datos entre el servidor y el cliente para todo el tiempo sin necesidad de jalar la solicitud del cliente cada 1-2 segundos y el servidor no conocería la IP del cliente. No estoy hablando de Comet y otros hacks.
Gracias
También los juegos en red en tiempo real a menudo "engañan" un poco. Cada cliente actualiza el mundo localmente en tiempo real, y hace algún truco para resincronizar la simulación compartida cuando llega una nueva actualización del servidor. Cuando le disparas a tu enemigo, puede esquivar tu disparo recibiendo solo un pequeño daño o puede no serlo. Por supuesto, es el servidor el que decidirá con justicia dependiendo de si el comando de esquivar de ese cliente llegó antes o después del tiro ... pero el jugador atacante probablemente no notará una eventual incongruencia entre la animación en 3D que se muestra y el número de energía barras restadas – 6502