xmppEmpezando con xmpp


Observaciones

El protocolo extensible de mensajería y presencia (XMPP) es un protocolo de red que utiliza XML para intercambiar datos estructurados entre dos o más entidades conectadas a la red casi en tiempo real. XMPP fue creado para satisfacer las pautas de IETF para los protocolos de presencia y mensajería instantánea ( RFC 2779 ), pero su propósito va mucho más allá de la mensajería instantánea. También se utiliza como middleware orientado a mensajes, para la comunicación máquina a máquina (M2M) y para Internet de las cosas (IoT).

El protocolo básico ligero de XMPP proporciona a los usuarios

  • autenticación fuerte
  • direcciones globales
  • Formato estructurado y extensible para el intercambio de datos.

El enfoque extensible hace posible crear protocolos personalizados sobre el núcleo de XMPP.

El protocolo XMPP central está definido en RFC 6120 y es administrado por el Grupo de trabajo de ingeniería de Internet (XMPP). Las extensiones de mensajería instantánea se definen en RFC 6121 , y un tercer documento ( RFC 7622 ) define el formato de las direcciones XMPP, también denominadas "Identificadores Jabber" (JID). La funcionalidad adicional se especifica en la forma de Protocolos de Extensión XMPP (XEP), que son creados por la comunidad y mantenidos por la Fundación de Estándares XMPP (XSF).

Versiones

Versión Notas Fecha de lanzamiento
1.0 Núcleo: RFC 6120 , IM: RFC 6121 , Dirección: RFC 7622 2011-03-01
0.9 Núcleo: RFC 3920 , IM: RFC 3921 , Dirección: RFC 6122 2004-10-01

Conectando y enviando un mensaje.

SleekXMPP (Python)

import sleekxmpp

client = sleekxmpp.Client("address@example.net", "password")
client.connect()
client.process(blocking=False)
client.send_message(mto="remote@example.net", mbody=self.msg)
 

Smack (Java / Android)

XMPPTCPConnection connection = new XMPPTCPConnection("user", "password", "example.org")
connection.connect().login();
Message message = new Message("otheruser@example.net", "Hi, how are you?");
connection.sendStanza(message);
connection.disconnect();
 

Crear conexión de cliente Xmpp utilizando la biblioteca agsxmpp

public void OpenXmppConnection(int port, bool useSsl, string serverJid, string userName, string password)
        {
            try
            {
                _xmppClientConnection.AutoResolveConnectServer = true;
                _xmppClientConnection.Port = port;
                _xmppClientConnection.UseSSL = useSsl;
                _xmppClientConnection.Server = serverJid;
                _xmppClientConnection.Username = userName;
                _xmppClientConnection.Password = password;
                _xmppClientConnection.Resource = "web";


                //authenticate and open connection with server
                _xmppClientConnection.Open();
            }
            catch (Exception ex)
            {
            }
        }
 

Creando una sesión de chat y enviando un mensaje.

Smack (Java)

  • Utilizando Smack 4.1
  • Se recomienda incluir la dependencia de Smack as Maven en su proyecto (por ejemplo, utilizando gradle o Maven).
  • Los demás artefactos / tarros de Smack deben agregarse manualmente a la ruta de clase: smack-core, smack-extensions, smack-experimental, smack-im, smnack-tcp, smack-java7
import org.jivesoftware.smack.ConnectionConfiguration.SecurityMode;
import org.jivesoftware.smack.SmackException;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.chat.Chat;
import org.jivesoftware.smack.chat.ChatManager;
import org.jivesoftware.smack.chat.ChatMessageListener;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smack.tcp.XMPPTCPConnection;
import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;

public void sendMessage() {

XMPPTCPConnectionConfiguration config = 
  XMPPTCPConnectionConfiguration.builder()
            .setServiceName("mydomain.local")
            .setHost("127.0.0.1")
            .setPort(5222)
            .build();

XMPPTCPConnection connection = new XMPPTCPConnection(config);

connection.connect();
connection.login("test1", "test1pwd"); 

ChatManager chatManager = ChatManager.getInstanceFor(connection);
String test2JID = "test2@domain.example";
Chat chat = chatManager.createChat(test2JID);
chat.sendMessage("Hello, how are you?");

connection.disconnect();
}
 

Enviar un mensaje utilizando la biblioteca agsxmpp.

        public class ConversationManager
        {
            #region ClassMemeber
    
            private XmppClientConnection _xmppClientConnection = null;
    
    
    
     public ConversationManager(XmppClientConnection con)
            {
                _xmppClientConnection = con;
             }

 public void SendMessage(string message, string to, string guid, string type)
        {
            try
            {
                if (_xmppClientConnection != null)
                {
                    Jid jidTo = new Jid(to);
                    agsXMPP.protocol.client.Message mesg = new agsXMPP.protocol.client.Message(jidTo, _ConnectionWrapper.MyJid,
                        agsXMPP.protocol.client.MessageType.chat,
                                      message);

                    mesg.Id = guid;
                    mesg.AddChild(new agsXMPP.protocol.extensions.msgreceipts.Request());//request delievery
                    _xmppClientConnection.Send(mesg);
                }
            }
            catch (Exception ex)
            {
            }
        }

}