将值传递给创建处理 websocket Play 2 的 Actor
Pass value to creating an Actor handling websocket Play 2
我通过以下方式接受 websocket 消息:
def socket = WebSocket.tryAcceptWithActor[ChatCommand, JsValue] { request =>
Future.successful(request.session.get("login") match {
case None => Left(Forbidden)
case Some(_) => Right(ChatActor.props)
})
}
如何将 "login" 的值传递给 actor?
编辑:
object ChatActor{
def props(out: ActorRef) = Props(new ChatActor(out))
....
}
class ChatActor(out: ActorRef) extends Actor {
def receive = ...
}
当我更换道具时,我无法在控制器中提供。
如果聊天演员是这样的
object ChatActor {
def props(out: ActorRef, login: String): Props = Props(new ChatActor(out, login))
}
class ChatActor(out: ActorRef, login: String) extends Actor{
override def receive: Receive = ???
}
然后你应该编写代码
def socket = WebSocket.tryAcceptWithActor[ChatCommand, JsValue] { request =>
Future.successful(request.session.get("login") match {
case None => Left(Forbidden)
case Some(login) => Right(out => ChatActor.props(out, login))
})
}
您可能会觉得有趣http://doc.akka.io/docs/akka/snapshot/scala/actors.html#Props
我通过以下方式接受 websocket 消息:
def socket = WebSocket.tryAcceptWithActor[ChatCommand, JsValue] { request =>
Future.successful(request.session.get("login") match {
case None => Left(Forbidden)
case Some(_) => Right(ChatActor.props)
})
}
如何将 "login" 的值传递给 actor?
编辑:
object ChatActor{
def props(out: ActorRef) = Props(new ChatActor(out))
....
}
class ChatActor(out: ActorRef) extends Actor {
def receive = ...
}
当我更换道具时,我无法在控制器中提供。
如果聊天演员是这样的
object ChatActor {
def props(out: ActorRef, login: String): Props = Props(new ChatActor(out, login))
}
class ChatActor(out: ActorRef, login: String) extends Actor{
override def receive: Receive = ???
}
然后你应该编写代码
def socket = WebSocket.tryAcceptWithActor[ChatCommand, JsValue] { request =>
Future.successful(request.session.get("login") match {
case None => Left(Forbidden)
case Some(login) => Right(out => ChatActor.props(out, login))
})
}
您可能会觉得有趣http://doc.akka.io/docs/akka/snapshot/scala/actors.html#Props