xmppAan de slag met xmpp


Opmerkingen

Het Extensible Messaging and Presence Protocol (XMPP) is een netwerkprotocol dat XML gebruikt om gestructureerde gegevens uit te wisselen tussen twee of meer op het netwerk aangesloten entiteiten in bijna realtime. XMPP is gemaakt om te voldoen aan de IETF-richtlijnen voor instant messaging en aanwezigheidsprotocollen ( RFC 2779 ), maar het doel gaat veel verder dan IM. Het wordt ook gebruikt als een op berichten gerichte middleware, voor machine-to-machine (M2M) communicatie en voor Internet of Things (IoT).

Het lichtgewicht XMPP-kernprotocol biedt gebruikers

  • sterke authenticatie
  • wereldwijde adressen
  • gestructureerd en uitbreidbaar formaat voor gegevensuitwisseling

De uitbreidbare aanpak maakt het mogelijk om aangepaste protocollen te bouwen bovenop de XMPP-kern.

Het kern XMPP-protocol is gedefinieerd in RFC 6120 en wordt beheerd door de Internet Engineering Task Force (XMPP). De expresberichtenextensies zijn gedefinieerd in RFC 6121 en een derde document ( RFC 7622 ) definieert het formaat van XMPP-adressen, ook wel "Jabber Identifiers" (JID's) genoemd. Aanvullende functionaliteit wordt gespecificeerd in de vorm van XMPP Extension Protocols (XEP's), die door de community worden gemaakt en worden onderhouden door de XMPP Standards Foundation (XSF).

versies

Versie Notes Publicatiedatum
1.0 Kern: RFC 6120 , IM: RFC 6121 , adres: RFC 7622 2011-03-01
0.9 Kern: RFC 3920 , IM: RFC 3921 , adres: RFC 6122 2004-10-01

Verbinding maken en een bericht verzenden

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

Xmpp-clientverbinding maken met behulp van agsxmpp-bibliotheek

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)
            {
            }
        }
 

Een chatsessie maken en een bericht verzenden

Smack (Java)

  • Smack gebruiken 4.1
  • Het wordt aanbevolen om Smack als Maven-afhankelijkheid in uw project op te nemen (bijvoorbeeld door gradle of Maven te gebruiken).
  • Anders moeten de volgende Smack-artefacten / potten handmatig aan het klassenpad worden toegevoegd: 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();
}
 

Stuur een bericht met behulp van agsxmpp-bibliotheek

        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)
            {
            }
        }

}