Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 回复不会传回';客户'-演员_Scala_Actor_Akka_Remote Actors - Fatal编程技术网

Scala 回复不会传回';客户'-演员

Scala 回复不会传回';客户'-演员,scala,actor,akka,remote-actors,Scala,Actor,Akka,Remote Actors,我在使用远程角色时出现意外行为。我有一个服务器和一个“客户端”。客户端向服务器参与者发送消息,服务器回复。当我使用“?”操作符时,一切都按预期工作。我从服务器上得到了答案 服务器: 客户: 现在我修改了代码,这样客户机就是一个参与者,只需对答案做出反应。但是,不会将回复发送回客户端。而是在服务器上创建一个“ClientActor”-实例,并在那里发送回复 修改后的客户端: 我错过了什么?这是阿卡的预期行为吗?我如何才能强迫它将答案发送回客户 感谢您的输入。您尚未在客户端上启动远程处理。好的,是的

我在使用远程角色时出现意外行为。我有一个服务器和一个“客户端”。客户端向服务器参与者发送消息,服务器回复。当我使用“?”操作符时,一切都按预期工作。我从服务器上得到了答案

服务器:

客户:

现在我修改了代码,这样客户机就是一个参与者,只需对答案做出反应。但是,不会将回复发送回客户端。而是在服务器上创建一个“ClientActor”-实例,并在那里发送回复

修改后的客户端:

我错过了什么?这是阿卡的预期行为吗?我如何才能强迫它将答案发送回客户


感谢您的输入。

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

好的,是的。这将带来预期的行为。=)
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])
}
object Client extends App {
  // client code
  val actor = remote.actorFor(
    "hello-service", "localhost", 2552)
  val result = (actor ? "Hello").as[String]
  println(result)
}
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"
}