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

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

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

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

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

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

9
задан Tommi 30 March 2012 в 04:29
поделиться