gpt4 book ai didi

scala - 如何断开 Scala Remote Actor 的连接?

转载 作者:行者123 更新时间:2023-12-02 11:09:07 26 4
gpt4 key购买 nike

在 scala 中,与远程参与者建立连接非常容易,但文档没有告诉我有关断开连接的任何信息。简单地丢弃引用是行不通的,因为远程参与者是参与者,所以在停止之前不会收集它们。那么如何断开连接呢?

退出后不会终止:

import actors.{DaemonActor,remote}
import remote.{RemoteActor,Node}

object SimpleClient{
val messageHandler = new DaemonActor{
def act{
loop{
react{
case message:String =>
println("got message: " + message)
case _ =>
}
}
}
start
}

def main(args:Array[String]){
val server = RemoteActor.select(Node("localhost",9999),'server)
server.send('Connect,messageHandler)

var exit = false
while(!exit){
val message = Console.readLine
if(message == "exit" || message == "quit") {
exit = true
server ! 'Disconnect
}
else
server ! message
}
}
}

这是服务器:

import actors.{Actor,OutputChannel}
import actors.remote.RemoteActor

object Server extends Actor{
val clients = new collection.mutable.HashSet[OutputChannel[Any]]
def act{
loop{
react{
case 'Connect =>
clients += sender
case 'Disconnect =>
clients -= sender
case message:String =>
for(client <- clients)
client ! message
}
}
}

def main(args:Array[String]){
start
RemoteActor.alive(9999)
RemoteActor.register('server,this)
}
}

最佳答案

[免责声明:我是 Akka 的 PO]

我可以建议看一下 Akka,它从第一天起就考虑了远程 Actor 的构建吗?www.akka.io

关于scala - 如何断开 Scala Remote Actor 的连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4340277/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com