Я пишу простой чат-сервер и хочу сделать его максимально простым. Мой сервер, указанный ниже, только получает соединения и сохраняет их в наборе клиентов. Входящие сообщения затем передаются всем клиентам на этом сервере. Сервер работает без проблем, но на стороне клиента RemoteActor останавливает выполнение моей программы. Есть ли способ удалить Actor на моем клиенте, не прерывая Actor на сервере?
Я пока не хочу использовать модель «один актер на клиента».
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