Play 2.0 - 将当前执行状态推送到页面

时间:2012-10-09 21:55:32

标签: scala playframework playframework-2.0

所以我目前有一个独立于Play的应用程序,可能需要很长时间才能执行。

我希望使用可以调用应用程序的Play在其上面放置一个UI,并向用户显示应用程序内部执行的一些细节。我想在执行过程中自动更新页面,例如如果应用程序中的变量递增,则会反映在页面上。

我不知道从哪里开始 - 我是否需要将应用程序拆分为模型+控制器?或者我只需要在控制器中有代码来实例化我已编码的类并调用我需要的方法?

如何在页面上不断显示执行状态?

我应该了解/阅读的任何资源?代码示例?

由于

2 个答案:

答案 0 :(得分:0)

您可能已经这样做了,但一个很好的起点是使用play new命令创建骨架Play应用程序,同时引用creating a new application部分。您将拥有“视图”(HTML模板页面)和一个控制器(在Application.scala中)。您可以添加更多控制器,但因为您只需要一个页面即可。

您可以将应用程序中的jar(如果它是JVM应用程序)添加到Play应用程序的lib目录中。从这个:“或者我只需要在控制器中有代码来实例化我已编码的类并调用我需要的方法?”听起来你很乐意让你的应用程序在Jetty + Play服务器的运行过程中运行。查看Global对象,以便在流程启动时启动应用程序。

查看comet sockets上有关将Play应用更新发送到浏览器的部分。你需要在网页上添加一些Javascript。

答案 1 :(得分:0)

您是否希望此应用程序在游戏外运行,可能在另一台服务器上运行?你能修改应用程序,还是第三方软件?

如果是这样,您必须有一些方法在播放前端和应用程序之间来回发送数据。您可以让您的应用程序公开websocket,然后您的播放前端和您的应用程序可以相互推送数据。然后,您可以让您的客户端页面打开一个websocket来播放前端,然后播放可以将更新推送到客户端。如果您的应用程序不支持websocket,您还可以在前端公开一些URL,以便应用程序进行POST。然后,您可以使用某种消息总线或数据库机制(RabbitMQ,redis,Mongo上限集合,甚至只是一个共享的Queue对象),以便前端websocket可以获取这些更新并将它们发送给客户端。