xmppDémarrer avec xmpp


Remarques

Le protocole XMPP (Extensible Messaging and Presence Protocol) est un protocole réseau utilisant XML pour échanger des données structurées entre deux ou plusieurs entités connectées au réseau en temps quasi réel. XMPP a été créé pour satisfaire aux directives de l'IETF pour les protocoles de présence et de messagerie instantanée ( RFC 2779 ), mais son objectif va bien au-delà de la messagerie instantanée. Il est également utilisé comme un middleware orienté message, pour la communication machine à machine (M2M) et pour l'Internet des objets (IoT).

Le protocole de base léger XMPP fournit aux utilisateurs

  • authentification forte
  • adresses globales
  • format structuré et extensible pour l'échange de données

L'approche extensible permet de créer des protocoles personnalisés sur le noyau XMPP.

Le protocole XMPP de base est défini dans la RFC 6120 et est géré par Internet Engineering Task Force (XMPP). Les extensions de messagerie instantanée sont définies dans la RFC 6121 et un troisième document ( RFC 7622 ) définit le format des adresses XMPP, également appelées "Jabber Identifiers" (JID). Des fonctionnalités supplémentaires sont spécifiées sous la forme de protocoles d'extension XMPP ( XMPP Extension Protocols ), créés par la communauté et gérés par XMPP Standards Foundation (XSF).

Versions

Version Remarques Date de sortie
1.0 Core: RFC 6120 , IM: RFC 6121 , adresse: RFC 7622 2011-03-01
0,9 Core: RFC 3920 , IM: RFC 3921 , adresse: RFC 6122 2004-10-01

Connexion et envoi d'un message

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();
 

Créer une connexion client Xmpp à l'aide de la bibliothèque 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)
            {
            }
        }
 

Créer une session de discussion et envoyer un message

Smack (Java)

  • Utiliser Smack 4.1
  • Il est recommandé d'inclure la dépendance Smack as Maven dans votre projet (par exemple en utilisant gradle ou Maven).
  • En outre, les artefacts / jarres Smack suivants doivent être ajoutés manuellement au classpath: 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();
}
 

Envoyer un message avec la bibliothèque 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)
            {
            }
        }

}