miércoles, 6 de marzo de 2013

Servidores y conexiones


Estos primeros días estoy comprobando cómo va el tema de las conexiones. Al ser un juego en el que todos los datos se van a procesar en un servidor central tenía que buscar la forma de que el servidor pudiera comunicarse con los diferentes clientes.
La solución a eso venía dada por la técnica llamada Callback. Que consiste, básicamente, en que el servidor guarde un lista con las referencias a los clientes y que mediante una lista de métodos que el cliente implementa mediante una interfaz se comunique. Hay que buscar una forma de que el servidor guarde esas referencias. Para registrarlo basta con mandar, en un método específico para ello, una referencia a un objeto que implemente dicha interfaz del cliente que posteriormente se guardará en alguna estructura en el código que implementa las interfaces del servidor.
Bien. Una vez conseguido ésto, que el cliente pueda registrarse en un servidor y borrarse, se me ocurrió que sería buena idea hacer que los servidores no fueran fijos sino que hubiera una lista con los disponibles y que el cliente eligiera a cuál conectarse.
Para ello, utilicé un apaño que consiste en lo siguiente. Guardé en Dropbox (o cualquier otro servicio donde puedas descargar un fichero sin necesidad de cuenta) un fichero de texto con las direcciones IP -o direcciones completas ya formateadas para RMI, o con los datos que veas oportuno- teniendo ya una especia de repositorio donde tener el registro de ellos. Bueno, una vez hecho esto, desde el cliente procedo a su descarga y lectura, guardando en mi caso cada línea como un elemento en un Array de String. Luego es cuestión de que el usuario elija el servidor que quiera y ya se conecta a él.
De esta forma ya he conseguido tener resuelta la parte de las conexiones. Ahora ya es dedicarme al tema de cómo funciona el juego por dentro y definir correctamente los métodos necesarios que el servidor y el cliente necesitarán.

No hay comentarios:

Publicar un comentario