Bonjour
Je dois actuellement créer un client de messagerie instantannée pour mon tfe, et j'ai un petit problème au niveau graphisme du client. Je m'explique :
- Lorsqu'une personne envoie le message vers son interlocuteur, le message envoyé doit s'afficher chez l'autre personne (bien évidement me diriez vous). Là où ça coince c'est que le message est bien envoyé vers la personne, mais il ne s'affiche pas dans la fenetre.
Je vous montre mon code pour l'envoie :
La méthode de reception des messages là voici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public void actionPerformed(ActionEvent e) { Object source = e.getSource(); if(source == button1){ if(messageField.getText() != null){ try{ String message = jabberModel.getUser()+" : "+messageField.getText()+ "\n"; jabberModel.sendMessage(jabberid+"@"+jabberModel.getServerName(), null, "thread_chat", "chat", null, message); discussionField.append(message); messageField.setText(null); } catch(Exception ex){ ex.printStackTrace(); } } } else if (source == button2){ } }
Le problème c'est que lorsque j'appelle ce bout de code, j'entre dans une boucle indéfinie (la boucle se trouve dans le waitFor) qui attend la réception d'un message. Et il restera dans cette boucle jusqu'à ce qu'il reçoive ce message donc je ne peux rien faire d'autre en attendant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 String message = null; do{ Packet packet = jabberModel.getTestThread().waitFor("message",null); message = packet.getChildValue("body"); } while(message == null);
La meilleure solution pour moi est que lorsqu'un utilisateur appuie sur le bouton envoyé, ça doit automatiquement appelé la méthode de reception de message chez le client et inversément, mais je ne sais pas comment faire pour implémenter ceci dans ma fenetre.
Quelqu'un aurait une idée ?
Merci beaucoup
Dasson
P.S. : J'utilise le protocole Jabber pour la messagerie instantanée.
Partager