xmppRozpoczęcie pracy z xmpp


Uwagi

Extensible Messaging and Presence Protocol (XMPP) to protokół sieciowy, który wykorzystuje XML do wymiany danych strukturalnych między dwoma lub więcej obiektami podłączonymi do sieci w czasie zbliżonym do rzeczywistego. XMPP został stworzony, aby spełnić wytyczne IETF dotyczące protokołów wiadomości błyskawicznych i protokołów obecności ( RFC 2779 ), ale jego cel wykracza daleko poza komunikatory internetowe. Jest również używany jako oprogramowanie pośredniczące zorientowane na wiadomości, do komunikacji maszyna-maszyna (M2M) i do Internetu rzeczy (IoT).

Lekki podstawowy protokół XMPP zapewnia użytkownikom

  • silne uwierzytelnianie
  • adresy globalne
  • ustrukturyzowany i rozszerzalny format wymiany danych

Rozszerzalne podejście umożliwia budowanie niestandardowych protokołów na rdzeniu XMPP.

Główny protokół XMPP jest zdefiniowany w RFC 6120 i jest zarządzany przez Internet Engineering Task Force (XMPP). Rozszerzenia czatu są zdefiniowane w RFC 6121 , a trzeci dokument ( RFC 7622 ) definiuje format adresów XMPP, zwany także „identyfikatorami Jabbera” (JID). Dodatkowa funkcjonalność jest określona w postaci protokołów rozszerzeń XMPP (XEP), które są tworzone przez społeczność i utrzymywane przez XMPP Standards Foundation (XSF).

Wersje

Wersja Notatki Data wydania
1.0 Rdzeń: RFC 6120 , IM: RFC 6121 , Adres: RFC 7622 01.03.2011
0,9 Rdzeń: RFC 3920 , IM: RFC 3921 , Adres: RFC 6122 01.10.2004

Podłączanie i wysyłanie wiadomości

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

Utwórz połączenie klienta Xmpp za pomocą biblioteki 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)
            {
            }
        }
 

Tworzenie sesji czatu i wysyłanie wiadomości

Smack (Java)

  • Używanie Smacka 4.1
  • Zaleca się uwzględnienie zależności Smack as Maven w swoim projekcie (np. Za pomocą gradle lub Maven).
  • W przeciwnym razie do ścieżki klas należy ręcznie dodać następujące artefakty / słoiki Smack: smack-core, smack-extensions, smack-eksperymentalny, 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();
}
 

Wyślij wiadomość za pomocą biblioteki 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)
            {
            }
        }

}