Scala: как встроить небольшой веб-сервер в приложение Scala?

Для небольшого образовательного проекта, предназначенного в качестве ресурса сообщества, чтобы помочь людям изучать Scala, я ищу простой способ обслуживания и обработки веб-страниц в фоновом режиме.

Минимальный фон: Scalatron - многопользовательская игра, в которой игроки сталкиваются с программами-ботами (написанными на Scala) друг против друга. Он сопровождается пошаговым руководством по Scala. В настоящее время игрокам необходимо использовать IDE на своих локальных компьютерах для компиляции ботов, которые затем публикуются в игре путем копирования их в общую сетевую директорию. Это громоздко Для следующей версии было бы неплохо предложить редактирование и публикацию ботов на основе браузера, чтобы максимально упростить настройку как для организаторов, так и для игроков.

У меня уже работает фоновый поток, который будет компилировать исходный код Scala, поступающий на сервер на лету (устраняя необходимость в полной IDE). Затем я должен запустить крошечный веб-сервер, чтобы обеспечить точку доступа для игроков и обрабатывать загрузки ботов (это избавляет от общего сетевого ресурса).

Требования очень просты: изначально я планирую обслуживать одну страницу с полем для редактирования и кнопкой «Перейти» (= загрузка на сервер, компиляция и публикация в игре); Я ожидаю, что не более 20 одновременно работающих пользователей с загрузкой не более одного бота всем пользователям каждые 5 или 10 секунд; Мне нужно держать минимальное состояние для каждого пользователя (только имя), и мне нужно возвращать сообщения об ошибках компилятора пользователю. Обратите внимание, что обновления игрового экрана будут отображаться НЕ в браузере, а на проекторе, подключенном к серверу. И в первую очередь, чтобы обеспечить максимально простую настройку (двойной щелчок на игровом сервере .jar). Я думаю, было бы неплохо запустить веб-сервер в фоновом режиме на существующем игровом сервере.

Каков наиболее подходящий способ сделать это? Должен ли я использовать некоторые существующие рамки, такие как Play или Lift? Существует ли существующий код для выполнения чего-то очень похожего на это? Есть ли смысл планировать запуск веб-сервера в фоновом режиме, как этот? Любой совет приветствуется.

Ответы на вопрос(6)

Ваш ответ на вопрос