xmppIniziare con xmpp


Osservazioni

XMPP (Extensible Messaging and Presence Protocol) è un protocollo di rete che utilizza XML per scambiare dati strutturati tra due o più entità connesse in rete in tempo quasi reale. XMPP è stato creato per soddisfare le linee guida IETF per i protocolli di messaggistica istantanea e presenza ( RFC 2779 ), ma il suo scopo va ben oltre l'IM. È anche usato come middleware orientato ai messaggi, per la comunicazione machine-to-machine (M2M) e per l'Internet of Things (IoT).

Il leggero protocollo core XMPP fornisce agli utenti

  • autenticazione forte
  • indirizzi globali
  • formato strutturato ed estensibile per lo scambio di dati

L'approccio estensibile consente di creare protocolli personalizzati su core XMPP.

Il protocollo XMPP di base è definito in RFC 6120 ed è gestito da Internet Engineering Task Force (XMPP). Le estensioni di messaggistica istantanea sono definite in RFC 6121 e un terzo documento ( RFC 7622 ) definisce il formato degli indirizzi XMPP, chiamati anche "Jabber Identifiers" (JID). Ulteriori funzionalità sono specificate sotto forma di XEPP Extension Protocols (XEP), creati dalla comunità e gestiti da XMPP Standards Foundation (XSF).

Versioni

Versione Gli appunti Data di rilascio
1.0 Core: RFC 6120 , IM: RFC 6121 , Indirizzo: RFC 7622 2011-03-01
0.9 Core: RFC 3920 , IM: RFC 3921 , Indirizzo: RFC 6122 2004-10-01

Connessione e invio di un messaggio

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

Crea connessione client Xmpp usando la libreria 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)
            {
            }
        }
 

Creazione di una sessione di chat e invio di un messaggio

Smack (Java)

  • Usare Smack 4.1
  • Si raccomanda di includere Smack come dipendenza da Maven nel progetto (ad es. Usando Gradle o Maven).
  • Altrimenti i seguenti artefatti / vasi devono essere aggiunti manualmente al 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();
}
 

Invia un messaggio usando la libreria 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)
            {
            }
        }

}