J'écris un simple serveur de chat, et je veux le garder aussi simple que possible. Mon serveur répertorié ci-dessous reçoit uniquement les connexions et les stocke dans l'ensemble des clients. Les messages entrants sont ensuite diffusés à tous les clients sur ce serveur. Le serveur fonctionne sans problème, mais du côté client, RemoteActor arrête mon programme de la fin. Est-il possible de supprimer l'acteur sur mon client sans mettre fin à l'acteur sur le serveur?Les Scala Remote Actors arrêtent le client de se terminer
Je ne veux pas encore utiliser un modèle "un acteur par client".
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)
}
}
mon client serait alors ressembler à ceci
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
Voir http://stackoverflow.com/questions/3795863/how-to-terminate-scala-remote-actor-client –