我是Scala和Play Framework的新手,所以我尝试了一下。 我已成功创建了websockets,但我希望能够通过简单的POST请求向多个套接字客户端发送消息。
例如,我有10个不同的随机浏览器连接到我的套接字( ws:// ... / websocket ),我自己可以发送一个" POST:HELLO&#34 ;到 / newMessage 。我如何做到这一点" HELLO"被送到10个客户中的每一个?
这是接收HELLO的控制器。工作正常并打印" 得到:AnyContentAsText(HELLO)" :
def newMessage = Action { implicit request =>
println("Got: " + request.body)
/* add something here to send "request.body" to every socket client */
Ok("Got: " + request.body)
}
这是我的简单" Socket"发送"欢迎"连接客户:
object Socket extends Controller {
def txSocket = WebSocket.using[String] { request =>
// Log events to the console
val in = Iteratee.foreach[String](println).map { _ =>
println("Disconnected")
}
// Send a single 'Welcome!' message
val out = Enumerator("Welcome!")
(in, out)
}
}
我怎样才能从我的"消息"控制器,将 request.body 发送到websocket?
感谢您的时间!
答案 0 :(得分:0)
每个websocket连接都会成为一个新的actor。您需要选择演员并将消息发送给他们。
喜欢这样。
object Application extends Controller {
def connect = WebSocket.acceptWithActor[JsValue, JsValue] { request => out =>
ClientActor.props(out)
}
def broadcast = Action { _ =>
system.actorSelection("akka://application/system/websockets/*/handler") ! "msg"
Ok
}
def system = play.api.libs.concurrent.Akka.system(play.api.Play.current)
}