Scala / Play2 - WebSocket枚举器和Actor

时间:2014-10-13 13:39:28

标签: scala playframework playframework-2.3

我有一个网页来提交长时间运行的工作。提交作业将提供指向详细作业视图的链接,其中包含运行作业时发生的日志消息。我不想在没有重新加载页面的情况下显示消息。

因此我使用JavaScript和相应的路由创建WebSocket连接。我的想法是使用actors(akka)将消息从服​​务器端传递到客户端。

如何使用scala 2.11并播放2.3.4?

最好的问候!

1 个答案:

答案 0 :(得分:1)

您可以在此处获得详细说明:https://www.playframework.com/documentation/2.3.x/ScalaWebSockets

以下是基于您的要求的粗略描述

首先使用 WebSocket.acceptWithActor

创建一个动作
case class MyMessage(s: String)

def socket = WebSocket.acceptWithActor[MyMessage, JsValue] { request => out =>
  MyWebSocketActor.props(out)
}

object MyWebSocketActor {
   def props(out: ActorRef) = Props(new MyWebSocketActor(out))
}

class MyWebSocketActor(out: ActorRef) extends Actor {
  def receive = {
    case msg: MyMessage =>
     out ! Json.toJson(msg)
  }