https://github.com/playframework/Play20/tree/master/samples/scala/websocket-chatの例を見ています
Websocket コントローラーを作成するには、次のように記述します。
def chat(username: String) = WebSocket.async[JsValue] { request =>
ChatRoom.join(username)
}
Chatroom.join はscala.concurrent.Future[(Iteratee[JsValue,_],Enumerator[JsValue])] を返します。しかし、Play! 内で使用される iteratee と列挙子はどこにありますか? フレームワーク?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
}
どうやって遊ぶの!入力を消費する際に iteratee の変化する状態を管理しますか?