envoyer et recevoir des messages à l'aide de smack API
J'ai configurer mon feu ouvert(serveur jabber) sur l'ordinateur local avec deux testuser1 et testuser2 .à l'aide de l'Étincelle client à la fois aux utilisateurs d'effectuer discuter sans problème,c'est agréable.
openfire IP -192.168.1.65
Je veux utiliser smack API(3.3.0) pour envoyer et recevoir des messages. j'ai écris côté de l'expéditeur code pour envoyer un message(avec testuser1) et testé avec Spark client(avec testuser2) message reçu sur testuser2 côté,mais quand j'essaie avec du code java pour recevoir de l'expéditeur du message ,je ne suis pas en mesure de recevoir ceux de publier des messages.
Sender.java
import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.MessageListener;
public class Sender
{
public static void main(String a[]) throws XMPPException, InterruptedException
{
XMPPConnection connection = new XMPPConnection("192.168.1.65");
System.out.println(connection);
connection.connect();
connection.login("testuser1", "test123");
Chat chat = connection.getChatManager().createChat("testuser2@sameek", new MessageListener() {
public void processMessage(Chat chat, Message message) {
//Print out any messages we get back to standard out.
System.out.println("Received message: " + message);
}
});
chat.sendMessage("Howdy test1!");
while (true) {
Thread.sleep(50);
}
}
}
Receiver.java
import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.MessageListener;
public class Receiver
{
public static void main(String a[]) throws XMPPException,, InterruptedException
{
XMPPConnection connection = new XMPPConnection("192.168.1.65");
System.out.println(connection);
connection.connect();
connection.login("testuser2", "test123");
Chat chat = connection.getChatManager().createChat("testuser1@sameek", new MessageListener() {
public void processMessage(Chat chat, Message message) {
//Print out any messages we get back to standard out.
System.out.println("Received message: " + message);
}
});
chat.sendMessage("Howdy test2!");
while (true) {
Thread.sleep(50);
}
}
}
merci de m'aider et de suggérer si je suis de mauvaise approche.
Grâce
OriginalL'auteur Sameek Mishra | 2013-08-24
Vous devez vous connecter pour publier un commentaire.
J'ai eu un problème similaire, après avoir suivi le tutoriel ici (http://www.javacodegeeks.com/2010/09/xmpp-im-with-smack-for-java.html) et c'est ce que j'ai trouvé:
Lorsque vous créez le chat, vous le chat de l'utilisateur que vous souhaitez vous connecter (par exemple dans mon cas "user1@gbd038"). Cela fonctionne bien si user1 est d'utiliser un client graphique comme la Spark (qui a sans doute la prise en charge intégrée et/ou erreur de manipulation), et user1 recevront le message. Ce processus s'attache à la messageListener à un chat maintenant associés à "user1@gbd038". Cependant, lorsque je réponds à partir de l'Étincelle que user1, le chat qui claque reçoit effectivement par complet avec l'emplacement de la balise, par exemple:
De sorte qu'il crée une nouvelle discussion que l'application n'est pas à l'écoute (et, par conséquent, votre demande ne sera pas recevoir /imprimer). J'en ai trouvé deux façons de résoudre ce problème:
utiliser l'emplacement de la balise lors du démarrage de la conversation (bien que cela ne semble pas très évolutive ou solide):
xmppManager.sendMessage("Hello mate", "user1@gbd038/Spark 2.6.3");
que Robin a suggéré, utiliser un ChatManagerListener (ce qui permettra de créer une nouvelle discussion lors de la réception de la réponse de l'utilisateur user1, qui peut être transmise à la messageListener):
Espère que ça aide quelqu'un dans la même position!
OriginalL'auteur Matt
De la création d'un chat et d'envoyer un message de discussion par les deux bouts, mais pas à l'écoute pour un chat. Utiliser un ChatManagerListener à écouter pour la réception des conversations des autres clients.
OriginalL'auteur Robin
Utilisez code ci-dessous pour l'envoi et la réception de message
Pour le code complet de l'exemple de visiter Comment faire pour envoyer un message à l'aide de smack api
OriginalL'auteur Anuj Dhiman