错误未找到值上下文?

时间:2014-04-03 07:28:13

标签: scala playframework websocket actor chatroom

def join(username: String): scala.concurrent.Future[(Iteratee[JsValue, _], Enumerator[JsValue])] = {
  println("friend name in model" + username)
  val first = Akka.system.actorOf(Props[ChatRoom2], name = username)
  println("this is chat room two default")
}    

当我使用此val first = context.actorOf(Props[ChatRoom2],name=username)

我使用它在另一个聊天室中创建一个子actor,但它显示错误找不到值上下文。

3 个答案:

答案 0 :(得分:3)

您无法从未扩展context的类访问角色Actor。您必须在上面使用Actor方法的课程中扩展join(不仅是ChatRoom2)

答案 1 :(得分:3)

当您使用actor system引用时,您将创建“顶级”actor,而使用context创建当前actor的“child actor”。这意味着访问context仅在Actor内有意义。

以下是一个例子:

val system = ActorSystem("name")
val act = system.actorOf(classOf[SomeActor])

class SomeActor extends Actor {
  def receive = {
    case _ => val child = context.actorOf(...)
  }
}

在这个例子中,“act”是一个“顶级”actor,而“child”是“act”的孩子,因为它是由act的上下文创建的。

我希望这有帮助!

如需更多帮助,请参阅文档:http://doc.akka.io/docs/akka/2.3.1/scala/actors.html

答案 2 :(得分:1)