Scala:如何将一个小型Web服务器嵌入到scala应用程序中?

Sca*_*war 9 webserver scala lift playframework

对于一个旨在帮助人们学习Scala的社区资源的小型教育项目,我正在寻找一种在后台线程中提供和处理网页的简单方法.

最小背景:Scalatron是一款多人游戏,其中玩家将机器人程序(用Scala编写)相互对立.它伴随着一步一步的Scala教程.目前,玩家需要在他们的本地机器上使用IDE来编译机器人,然后通过将机器人复制到共享网络目录中将其发布到游戏中.这很麻烦.对于下一个版本,最好提供基于浏览器的机器人编辑和发布,以最大限度地简化组织者和玩家的设置.

我已经有了一个后台线程工作,它将编译即时到达服务器的Scala源代码(无需完整的IDE).接下来,我必须运行一个小型的Web服务器,为玩家提供一个接入点,并处理机器人上传(这可以摆脱网络共享).

要求是非常基本的:最初我设想用一个编辑框和一个"开始"按钮服务一个页面(=上传到服务器,编译并发布到游戏中); 我希望每隔5或10秒钟,所有用户上传不超过一个机器人的并发用户不超过20个; 我需要为每个用户保持最小状态(只是一个名字),我需要向用户返回编译器错误消息.请注意,游戏屏幕更新不会显示在浏览器中,而是显示在连接到服务器计算机的投影仪上.主要是为了允许最简单的设置(双击游戏服务器.jar)我认为在现有游戏服务器中的后台线程中运行Web服务器会很不错.

最合适的方法是什么?我应该使用一些现有的框架,比如Play或Lift吗?是否存在执行与此类似的操作的代码?计划在这样的后台线程中运行Web服务器是否合理?任何建议表示赞赏.

Dan*_*ral 11

嵌入式Web服务器正是Unfiltered的用途.Unfiltered的基本理念是Web服务器只是您从代码中调用的库,而不是您的代码是Web框架调用的代码.


Jes*_*per 2

Java 世界中最常用的小型嵌入式 Web 服务器/servlet 容器之一是Jetty。由于 Scala 可以轻松使用 Java 库,因此从 Scala 中使用它应该很容易。

本页显示了一些关于如何将其作为嵌入式 HTTP 服务器启动的简单示例(Java 语言)。