2014-01-24 66 views
0

我從下面的帖子得到了下面的例子:異步的WebSocket在遊戲框架

http://blog.tksfz.org/2012/10/12/websockets-echo-using-play-scala-and-actors-part-i/

import play.api.libs.concurrent.Akka 
import play.api.Play.current // needed by Akka.future 

def simpleAsyncWebSocket = WebSocket.async[String] { 
    Akka.future { 
    val out = Enumerator.imperative[String]() 
    val in = Iteratee.foreach[String] { 
     msg => 
     out.push(msg) 
    } 
    (in, out) 
    } 
} 

這裏的問題是執行上下文將上面的代碼中使用?我嘗試在我的Play應用程序中使用它。她是我已經配置爲默認執行上下文:

play { 
    akka { 
    event-handlers = ["akka.event.slf4j.Slf4jEventHandler"] 
    loglevel = WARNING 
    actor { 
     default-dispatcher = { 
     fork-join-executor { 
      parallelism-factor = 3.0 
      parallelism-max = 256 
     } 
     } 
    } 
    } 
} 

我如何將自定義執行上下文附加到上面的示例代碼?

回答

2

目前來自akka的未來與scala std庫中的未來合併,因此您可能應該使用它。

http://www.scala-lang.org/api/current/#scala.concurrent.Future$ < - 看看應用功能:

def apply[T](body: ⇒ T)(implicit execctx: ExecutionContext): Future[T]

它需要第二個參數的執行上下文,因此您可以創建一個在你的範圍(這將是你的控制器),使其隱式和那麼它將被使用。

看看這裏: http://www.playframework.com/documentation/2.2.x/ScalaAsync更多的例子。

+0

感謝您的信息。讓我明天嘗試一下,並告訴你是否有幫助。 – sparkr