J'utilise le nouvel Akka IO et j'ai suivi ce tutorial (qui est une simple application serveur-client). Mon code de système d'acteur du serveur ressemble à ceci:akka io serveur tcp
// create the sever system
ActorSystem tcpServerSystem = ActorSystem.create("tcp-server-system");
// create the tcp actor
final ActorRef tcpServer = Tcp.get(tcpServerSystem).manager();
// create the server actor;
ActorRef serverActor = tcpServerSystem.actorOf(new Props(ServerActor.class).withRouter(new RoundRobinRouter(5)), "server");
// tell the tcp server to use an actor for listen connection on;
final List<Inet.SocketOption> options = new ArrayList<Inet.SocketOption>();
options.add(TcpSO.reuseAddress(true));
tcpServer.tell(TcpMessage.bind(serverActor, new InetSocketAddress("127.0.0.1", 12345), 10, options),
serverActor);
Le ServerActor classe, il est juste un acteur clair que sur son OnReceive fait ce qui suit:
logger.info("Received: " + o);
if (o instanceof Tcp.Connected){
connectionActor = getSender();
connectionActor.tell(TcpMessage.register(getSelf()), getSelf());
ByteStringBuilder byteStringBuilder = new ByteStringBuilder();
byteStringBuilder.putBytes("Hello Worlds".getBytes());
connectionActor.tell(TcpMessage.write(byteStringBuilder.result()), getSelf());
}
Je suis en train de tester le serveur acteur utilisant netcat et avoir ce comportement "étrange": seul le premier client qui se connecte au serveur reçoit le message envoyé par le serveur. Les clients nexts peuvent se connecter au serveur mais ne reçoivent pas le message. En mode de débogage, le serveur ne reçoit pas non plus le message Tcp.Connected (sauf pour le premier client connecté), donc un message d'enregistrement n'a pas pu être envoyé au client, bien que les clients suivants puissent se connecter.
Merci pour la réponse. Je soupçonnais que les problèmes sont liés au sélecteur NIO. J'attends la prochaine étape. – dumitru
Il est déjà sorti: https://groups.google.com/forum/?fromgroups=#!topic/akka-user/lRXIHNP1614 –
Merci Viktor pour le lien. J'ai testé avec le nouveau jalon et tout va bien. Maintenant, j'ai reveiced tous les événements nécessaires. – dumitru