我正在查看https://github.com/playframework/Play20/tree/master/samples/scala/websocket-chat上的示例。
要创建一个 WebSocket 控制器,你需要编写类似下面的代码:
Chatroom.join返回一个scala.concurrent.Future[(Iteratee[JsValue,_],Enumerator[JsValue])]。但是在Play!框架中,迭代器和枚举器在哪里使用?WebSocket类(WebSocket.scala)似乎忽略了这些输入:
Play! 如何管理迭代器消耗输入时的状态变化?
要创建一个 WebSocket 控制器,你需要编写类似下面的代码:
def chat(username: String) = WebSocket.async[JsValue] { request =>
ChatRoom.join(username)
}
Chatroom.join返回一个scala.concurrent.Future[(Iteratee[JsValue,_],Enumerator[JsValue])]。但是在Play!框架中,迭代器和枚举器在哪里使用?WebSocket类(WebSocket.scala)似乎忽略了这些输入:
case class WebSocket[A](f: RequestHeader => (Enumerator[A], Iteratee[A, Unit]) => Unit) (implicit val frameFormatter: WebSocket.FrameFormatter[A]) extends Handler {
type FRAMES_TYPE = A
/**
* Returns itself, for better support in the routes file.
*
* @return itself
*/
def apply() = this
}
Play! 如何管理迭代器消耗输入时的状态变化?