He leído algunos ejemplos y los he probado, pero todos ellos necesitan iniciar un chat con alguien primero para recibir mensajes entrantes ... Quiero recuperar estos mensajes entrantes sin necesidad de hablar primero con el jid. ¿Alguien puede dar un ejemplo?Cómo recibir mensajes entrantes de XMPP usando Smack?
Respuesta
Debe registrarse un ChatListener a ser notificado de nuevos chats, a continuación, se puede añadir un escucha de mensajes a ellos como normal:
connection.getChatManager().addChatListener(new ChatManagerListenerImpl());
....
private class ChatManagerListenerImpl implements ChatManagerListener {
/** {@inheritDoc} */
@Override
public void chatCreated(final Chat chat, final boolean createdLocally) {
chat.addMessageListener(...);
}
}
@cris Smith ¡Hola! THX para su respuesta :) podría por favor dar un ejemplo completo? Estoy realmente en problemas: S – Winter
¡muy útil! para la información, se puede llamar a addChatListener antes del inicio de sesión. – h3xStream
He usado el mismo enfoque, pero los mensajes fuera de línea no se reciben en orden. ¿Cómo puedo resolver esto? – Max
i sólo quería añadir una copia de muestra & pegar:
// connect to server
XMPPConnection connection = new XMPPConnection("jabber.org");
connection.connect();
connection.login("user", "password"); // TODO: change user and pass
// register listeners
ChatManager chatmanager = connection.getChatManager();
connection.getChatManager().addChatListener(new ChatManagerListener()
{
public void chatCreated(final Chat chat, final boolean createdLocally)
{
chat.addMessageListener(new MessageListener()
{
public void processMessage(Chat chat, Message message)
{
System.out.println("Received message: "
+ (message != null ? message.getBody() : "NULL"));
}
});
}
});
// idle for 20 seconds
final long start = System.nanoTime();
while ((System.nanoTime() - start)/1000000 < 20000) // do for 20 seconds
{
Thread.sleep(500);
}
connection.disconnect();
Este ejemplo se conecta a jabber.org y muestra todos los mensajes recibidos en la consola.
Estoy haciendo lo mismo, pero no puedo recibir el mensaje. Hay una publicación en el blog. Explico qué está pasando con mi código. http://www.rmwaqas.com/chat-client-using-smack/ – Waqas
Encuentra el siguiente código.
Por favor, añadir smack.jar & smackx.jar a su trayectoria de la estructura
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.PacketCollector;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.filter.AndFilter;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.filter.PacketTypeFilter;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Packet;
public class GoogleTalkDemo extends Thread{
private XMPPConnection xmppConnection;
public void connect(String server, int port, String s) throws Exception {
xmppConnection = new XMPPConnection(new ConnectionConfiguration(server, port,s));
xmppConnection.connect();
}
public void disconnect(){
if(xmppConnection != null){
xmppConnection.disconnect();
interrupt();
}
}
public void login(String username, String password) throws Exception{
connect("talk.google.com", 5222, "gmail.com");
xmppConnection.login(username, password);
}
public void run(){
try {
login("[email protected]", "your password");
System.out.println("Login successful");
listeningForMessages();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String args[]) throws Exception {
GoogleTalkDemo gtd = new GoogleTalkDemo();
gtd.run();
}
public void listeningForMessages() {
PacketFilter filter = new AndFilter(new PacketTypeFilter(Message.class));
PacketCollector collector = xmppConnection.createPacketCollector(filter);
while (true) {
Packet packet = collector.nextResult();
if (packet instanceof Message) {
Message message = (Message) packet;
if (message != null && message.getBody() != null)
System.out.println("Received message from "
+ packet.getFrom() + " : "
+ (message != null ? message.getBody() : "NULL"));
}
}
}
}
Me ayudó mucho :) –
@Samik desde donde se encuentra este archivo smack.jar & smackx.jar tengo dolwoad smack_4_1_3.zip pero no puedo encontrar este archivo jar dos – PankajAndroid
private MultiUserChat muc; /* Initialize muc */
private void listeningForMessages()
{
muc.addMessageListener(new PacketListener() {
public void processPacket(Packet packet)
{
final Message message = (Message) packet;
// Do your action with the message
}
});
}
Hola @TheMan Tu respuesta me ayudó mucho. El método anterior se llama a processPacket cuando envío un mensaje al usuario, pero si el usuario responde a mi mensaje, ¿esto no se llama getting? Por favor ayuda ... –
Debería ser llamado. No estoy seguro de por qué no está funcionando para ti. – TheMan
Hola @TheMan si quieres el mensaje del oyente de grupo, entonces deberías ** agregarPacketListner ** a ** conexión ** –
- 1. Cómo crear una conexión SSL utilizando la biblioteca Smack XMPP?
- 2. Mantenga la conexión XMPP (usando smack) activa en toda la aplicación
- 3. Cómo enviar un mensaje usando XMPP Framework
- 4. XMPP framework - Cómo obtener mensajes de grupo
- 5. Android - Escuchar mensajes SMS entrantes
- 6. XMPP aSmack El servidor MultiUserChat continúa enviando mensajes ya recibidos
- 7. Cómo enviar y recibir mensajes de difusión
- 8. ¿Cómo podemos acceder a los mensajes de archivos en aplicaciones para Android desde un servidor XMPP
- 9. Android AGREGAR AMIGO usando Smack
- 10. asmack - recibir mensajes XML personalizados ||
- 11. Socket.io: ¿Cómo manejo todos los mensajes entrantes en el servidor?
- 12. Recibir mensajes de Adium en Applescript
- 13. Cómo crear MUC y enviar mensajes al MUC existente usando Python y XMPP
- 14. Cómo enviar/recibir SMS usando comandos AT?
- 15. Conectarse a Google Talk usando smack
- 16. Cómo enviar y recibir mensajes SMS de datos
- 17. no se puede conectar al servidor xmpp usando node-xmpp
- 18. Recibir mensajes SMS por aplicación web
- 19. XMPP y Android
- 20. XEP-0080 Ubicación del usuario en la Biblioteca Smack
- 21. Android: asmack (portado) o smack (parchado)?
- 22. Interceptar mensajes flash entrantes en el móvil Android
- 23. Android y Google Voice: escuchando los mensajes SMS entrantes
- 24. secuencia de transmisión enviar/recibir mensajes de difusión?
- 25. Cómo recibir mensajes stdio y error_logger en un shell remoto
- 26. diferencia entre nombre de servidor XMPP y nombre de servicio XMPP?
- 27. ¿Cómo obtener la marca de tiempo del mensaje xmpp entrante?
- 28. pjsip recibir sms
- 29. Cómo enviar/recibir mensajes SMS desde la aplicación C#, usando el teléfono móvil Nokia
- 30. Procesamiento de correos electrónicos entrantes en Heroku
¿cuál es su servidor? –