首先感謝大家抽出一些時間來審查我的問題。我是scala生態系統的新手,所以我覺得我正在說一些概念。播放2.4創建一個演員處理websocket與Guice
我在Play 2.4項目中介紹了Guice,它在一些REST控制器中工作。我已經編輯build.sbt追加routesGenerator := InjectedRoutesGenerator
作爲播放官方文檔recomends和編輯我的路線,你可以在下面的例子中看到:
我注射演員模塊的樣子:
class ChatModule extends AbstractModule with ScalaModule with AkkaGuiceSupport with GuiceAkkaActorRefProvider {
override def configure() {
bindActor[TalkerProviderActor](TalkerProviderActor.name)
...
而這一切似乎都在起作用。
但另一個端點使用Play方法WebSocket.acceptWithActor
處理websocket。我需要創建一個也需要一些依賴關係的actor。
控制器創建一個ConnectionActor
:
class ConnectionActor(
@Assisted() websocket: ActorRef,
monitoring: Monitoring,
@Named(BouncerActor.name) bouncer: ActorRef,
) extends Actor
...
class ChatController @Inject() extends Controller {
def socket(): WebSocket[String, JsValue] = WebSocket.acceptWithActor[String, JsValue] { request => out =>
// I had the following statement in order to build the actor before introducing Guice:
// ConnectionActor.props()
// Now, I need some magic here
}
}
因此,大家可以看到我需要一個websocket: ActorRef
對於WebSocket的輸出。
我使用AkkaGuiceSupport
提供bindActorFactory
方法創建應用程序的其他部分有的演員:
bindActorFactory[TalkerActor, TalkerActor.Factory]
但我不知道我應該如何在這個辦案WebSocket的創建一個演員。你們能幫我嗎?
謝謝
謝謝羅傑!我會看一看。 – SergiGP