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