Scala: ¿cómo incrustar un pequeño servidor web en una aplicación scala?

Para un pequeño proyecto educativo destinado a ser un recurso comunitario para ayudar a las personas a aprender Scala, estoy buscando una manera simple de servir y procesar páginas web en un hilo de fondo.

Fondo mínimo: Scalatron es un juego multijugador en el que los jugadores enfrentan los programas bot bot (escritos en Scala) entre sí. Se acompaña de un tutorial paso a paso de Scala. Actualmente, los jugadores necesitan usar un IDE en sus máquinas locales para compilar bots, que luego se publican en el juego copiándolos en un directorio de red compartido. Esto es engorroso. Para la próxima versión, sería bueno ofrecer edición y publicación de bots basadas en navegador para simplificar al máximo la configuración tanto para los organizadores como para los jugadores.

Ya tengo un hilo de fondo funcionando que compilará el código fuente de Scala que llega al servidor sobre la marcha (obviando la necesidad de un IDE completo). A continuación, tengo que ejecutar un pequeño servidor web para proporcionar un punto de acceso para los jugadores y manejar las cargas de bot (esto elimina el recurso compartido de red).

Los requisitos son muy básicos: inicialmente preveo servir una sola página con un cuadro de edición y un botón "Ir" (= subir al servidor, compilar y publicar en el juego); No espero más de 20 usuarios concurrentes con no más de una carga de bot en todos los usuarios cada 5 o 10 segundos; Necesito mantener un estado mínimo para cada usuario (solo un nombre) y debo devolver mensajes de error del compilador al usuario. Tenga en cuenta que las actualizaciones de la pantalla del juego NO se mostrarán en el navegador, sino en un proyector conectado a la máquina del servidor. Y principalmente para permitir la configuración más simple posible (haga doble clic en el servidor de juegos .jar) Creo que sería bueno ejecutar el servidor web en un hilo de fondo dentro del servidor de juegos existente.

¿Cuál es la forma más adecuada de hacer esto? ¿Debo usar un marco existente, como Play o Lift? ¿Existe un código para hacer algo muy similar a esto? ¿Es razonable planear ejecutar un servidor web en un hilo de fondo como este? Cualquier consejo es apreciado.

Respuestas a la pregunta(12)

Su respuesta a la pregunta