回复不会传回"客户"演员

Gam*_*lor 2 scala remote-actors actor akka

使用远程actor时我有一个意想不到的行为.我有一个服务器和一个'客户'.客户端向服务器actor发送消息,服务器回复.当我使用'?' 操作员一切按预期工作.我从服务器上得到答案.

服务器:

class HelloWorldActor extends Actor {
  def receive = {
    case msg => self reply (msg + " World")
  }
}

object Server extends App{
  Actor.remote.start("localhost",2552);
  Actor.remote.register("hello-service",Actor.actorOf[HelloWorldActor])
}
Run Code Online (Sandbox Code Playgroud)

客户端:

object Client extends App {
  // client code
  val actor = remote.actorFor(
    "hello-service", "localhost", 2552)
  val result = (actor ? "Hello").as[String]
  println(result)
}
Run Code Online (Sandbox Code Playgroud)

现在我更改了代码,以便客户端是一个演员,只是对答案作出反应.但是,不会将回复发送回客户端.而是在服务器上创建一个'ClientActor'实例并在那里发送回复?

修改后的客户端:

class ClientActor extends Actor {
  def receive = {
    case "Ask" =>{
      val actor = remote.actorFor(
        "hello-service", "localhost", 2552)
      actor ! "Hello"
    }
    case response:String => println(response) // This executed on the server! That's not what I expect?
  }
}

object Client extends App {
  // client code
  val client = actorOf[ClientActor].start();
  client ! "Ask"
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么?那是阿卡的预期行为吗?我怎么能强迫它把答案发回给客户?

感谢您的任何意见.

Vik*_*ang 5

您尚未在客户端上启动远程处理.