Bonjour
Je pense avoir un soucis dans ma modélisation d'un client java qui se connecte à IRC. Je vais essayer d'expliquer rapidement.
J'ai une classe qui représente une connexion au serveur, qui instancie le socket, l'input et l'output et pour la réception, je lance un thread qui s'occupe d'attendre les messages et quand il reçoit un message, j'ai un callback qui appelle une méthode de la classe du serveur concerné.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Thread reception = new Thread(new Reception(in, this));
reception.start();
Et dans Reception,

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void run() {
	while(true){
 
		try {
 
			message = in.readLine();
 
			if (message != null) {
				connexion.onMessage(message);
			}
 
		} catch (Exception e) { }
	}
}
Et donc ma méthode onMessage regarde quel type de message est reçu avec des regex et suivant le message, dispatche sur tel ou tel autre méthode pour gérer l'événement.
Mais quand le serveur me "bombarde" de messages (la commande /list pour les connaisseurs), le serveur m'envoie pendant environ ~2min une grosse quantité de messages et c'est là que j'ai un soucis c'est que mon programme met trop de temps à gérer l'ensemble (C'est ce que je pense). Et que lors de l'envoie des messages par le serveur, j'essaye de rejoindre un autre salon, le serveur reçoit rapidement mon information (Donc aucun soucis) mais je ne reçois plus les autres messages. Je reçois tout en "un block" lorsque le traitement des messages de la commande /liste est terminée alors que normalement vu que le message est arrivé bien avant il aurait du être traité il y de ça 1 min avant.

Pour donner un exemple, je demande la liste des salons du serveur. celui-ci me répond une énorme liste. Pendant ce temps je décide de rejoindre le salon #test. Je le rejoins bien correctement mais je verrais sur mon client seulement à la fin des traitements des salons que j'ai rejoins ce salon. Ça pose donc un petit soucis. Le client n'est plus tenu à jour. Donc si pendant cette période je reçois un PING, il répondra peut être trop tard donc Ping Timeout.

Une idée du soucis :s ?

Merci