我在寫一個簡單的聊天服務器,我想盡可能保持簡單。下面列出的我的服務器只接收連接並將它們存儲在客戶端設置中。傳入的消息然後廣播給該服務器上的所有客戶端。服務器沒有問題,但在客戶端,RemoteActor停止我的程序終止。有沒有辦法刪除我的客戶端上的Actor而不終止服務器上的Actor?Scala Remote Actors停止客戶端
我不想使用「每個客戶端一個演員」模型。
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)
}
}
那麼我的客戶是這樣的
val server = RemoteActor.select(Node("localhost",9999),'server)
server.send('Connect,messageHandler) //answers will be redirected to the messageHandler
/*do something until quit*/
server ! 'Disconnect
請參閱http://stackoverflow.com/questions/3795863/how-to-terminate-scala-remote-actor-client – 2010-11-15 00:20:25