Así que. La necesidad de implementar una función de servidor correctamente en lugar de parchear juntos llevó a casi dos semanas de prueba y error.
Pero... ¡victoria! Esa es la versión corta.
Aquí está el más largo. Había un pequeño programa de servidores que actuaba como un reloj. Mientras ese programa funcionara bajo el mismo techo que todo lo demás, todo estaba bien. Cada otro componente tomó sus datos de él, y todo tarareaba. El problema surgió cuando otro programa necesitaba acceso a esa información. Debido a su extenso trabajo de base de datos, este otro programa ya no podía funcionar bajo el mismo techo.
Durante muchos días probé cada enfoque que se me ocurrió para obtener acceso. No importa cómo lo torcí, o no había acceso, había acceso sólo a un segmento no laboral, o otra copia comenzó y estaba naturalmente fuera de sincronización.
Esto importa porque todos los eventos de juego, sincronización cliente-servidor, y así sucesivamente dependen de este reloj.
Y si partes del servidor eventualmente se distribuyen entre diferentes recursos, tuve que establecer una comunicación completa o idear una arquitectura diferente. El arreglo actual funcionó y pudo haber sido parcheado, pero era un callejón sin salida.
Así que tuve que integrar otro framework, Spring, en el servidor y utilizar su arquitectura para lanzar un servidor separado que maneja y procesa las solicitudes de API.
En lenguaje sencillo, cualquier programa que conozca la dirección HTTP correcta y el nombre del endpoint puede ahora solicitar el valor de una variable y recibir su contenido en respuesta, ya sea en la misma máquina o en Australia.
En general, esto proporciona una comunicación relativamente rápida entre diferentes partes del servidor sin utilizar bases de datos. También permite crear interfaces gráficas separadas para monitorear y controlar el servidor rápidamente. Con rapidez, quiero decir que un controlador y una pantalla para el reloj tomarían quizás media hora. Con la práctica y los ejemplos ya hechos, sería aún más rápido. Y todo puede funcionar desde cualquier otra máquina.
Al final, lo hice. Funciona. Gané mucha experiencia y conocimiento en el proceso.
Sí, tomó dos semanas inesperadas, pero tenía que hacerse. El mal funcionamiento del reloj estaba sosteniendo el componente del servidor que maneja los cambios en el estado de la nave. Sin ella, los pequeños barcos no volarán y aterrizarán correctamente.
Hoy ya añadí más interfaz y lógica del lado del cliente para los barcos de aterrizaje y lanzamiento. No está terminado, pero se ha hecho mucho.
¡Empezaremos a volar pronto!
