J'utilise le code ci-dessous pour envoyer des messages.Problème lors de la réception du premier message par Smack
// Assume we've created an XMPPConnection name "connection".
ChatManager chatmanager = connection.getChatManager();
Chat newChat = chatmanager.createChat("[email protected]", new MessageListener() {
public void processMessage(Chat chat, Message message) {
System.out.println("Received message: " + message);
}
});
try {
newChat.sendMessage("Howdy!");
}
catch (XMPPException e) {
System.out.println("Error Delivering block");
}
Et ci-dessous pour la réception de messages envoyés à mon JabberID, de manière asynchrone.
// Create a packet filter to listen for new messages from a particular
// user. We use an AndFilter to combine two other filters.
PacketFilter filter = new AndFilter(new PacketTypeFilter(Message.class),
new FromContainsFilter("[email protected]"));
// Assume we've created an XMPPConnection name "connection".
// First, register a packet collector using the filter we created.
PacketCollector myCollector = connection.createPacketCollector(filter);
// Normally, you'd do something with the collector, like wait for new packets.
// Next, create a packet listener. We use an anonymous inner class for brevity.
PacketListener myListener = new PacketListener() {
public void processPacket(Packet packet) {
// Do something with the incoming packet here.
}
};
// Register the listener.
connection.addPacketListener(myListener, filter);
Le message d'envoi est correct.
Mais la réception d'un message d'un autre JabberID ne se termine pas avant que j'aie envoyé un message à ce JabberID.
Et après cela, je reçois les messages envoyés correctement.
Notez que j'ai souvent besoin de recevoir des messages de jabberID qui ne sont pas dans ma liste et souvent Mon application n'est pas le côté qui commence une conversation.
Les codes supérieurs sont des échantillons cliquables mais mon code est complètement identique sauf que je ne crée pas l'implémentation de PacketListener en ligne.
Pendant que je réfléchis à votre problème, jetez un œil à [déboguer avec smack] (http://www.igniterealtime.org/builds/smack/docs/latest/documentation/debugging.html). J'ai été capable de résoudre presque tous les problèmes après que simlpy ait allumé le débogueur ;-) –
Votre code est-il complet? Je ne fais aucune invocation à myCollector.nextPacket() ... – mschonaker