anlık mesajlaşma altyapısı etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
anlık mesajlaşma altyapısı etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

10 Aralık 2015 Perşembe

Java uygulamaları için Smack ile XMPP IM - Anlık Mesajlaşma Altyapısı

Java uygulamaları için Smack ile XMPP IM - Anlık Mesajlaşma Altyapısı

Merhaba arkadaşlar.


Smack ile yapmış olduğum uygulama kodları aşağıdadır.



XmppManager classımız

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.ChatManager;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.ConnectionConfiguration.SecurityMode;
import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.Roster;
import org.jivesoftware.smack.SmackConfiguration;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Message;


public class XmppManager {
   private static final int packetReplyTimeout = 500; // millis
       private String server;
       private int port;
       private ConnectionConfiguration config;
       private XMPPConnection connection;
       private ChatManager chatManager;
       private MessageListener messageListener;

       public XmppManager(String server, int port) {
           this.server = server;
           this.port = port;
       }

       public void init() throws XMPPException {

               System.out.println(String.format("Initializing connection to server %1$s port %2$d", server, port));
               SmackConfiguration.setPacketReplyTimeout(packetReplyTimeout);
               config = new ConnectionConfiguration(server, port);
               config.setSASLAuthenticationEnabled(true);
               config.setSecurityMode(SecurityMode.enabled);
               connection = new XMPPConnection(config);
               connection.connect();

               System.out.println("Connected: " + connection.isConnected());
               chatManager = connection.getChatManager();
               messageListener = new MyMessageListener();
           }

       public void performLogin(String username, String password) throws XMPPException {

               if (connection!=null && connection.isConnected()) {
                   connection.login(username, password);
               }
           }

       public void destroy() {

               if (connection!=null && connection.isConnected()) {
               connection.disconnect();
               }
           }
       
       public void sendMessage(String message, String buddyJID) throws XMPPException {

               System.out.println(String.format("Sending mesage '%1$s' to user %2$s", message, buddyJID));
               Chat chat = chatManager.createChat(buddyJID, messageListener);
               chat.sendMessage(message);

           }
       
       public void createEntry(String user, String name) throws Exception {
               System.out.println(String.format("Creating entry for buddy '%1$s' with name %2$s", user, name));
               Roster roster = connection.getRoster();
               roster.createEntry(user, name, null);

       }


       class MyMessageListener implements MessageListener {

               @Override               public void processMessage(Chat chat, Message message) {
                  
                  String from = message.getFrom();
                   String body = message.getBody();
                   System.out.println(String.format("Received message '%1$s' from %2$s", body, from));

               }

           }
XmppTest classımız
public class XmppTest {

   public static void main(String[] args) throws Exception {

      
      String username = "kullanıcı adınız";
      String password = "şifreniz";

      XmppManager xmppManager = new XmppManager("openfiresunucu ipsi", client port);

      xmppManager.init();
      xmppManager.performLogin(username, password);
      xmppManager.setStatus(true, "Merhaba");
        String buddyJID = "mesaj gööndereceğiniz kişinin JID 'si";
        String buddyName = "mesaj gööndereceğiniz kişinin adı";
        xmppManager.createEntry(buddyJID, buddyName);
        xmppManager.sendMessage("Göndereceğiniz mesaj buraya", "kullanıcıkimliği@sunucu adı(admin@openfire)");
              
        boolean isRunning = true;
        while (isRunning) {
         Thread.sleep(50);
      }
      xmppManager.destroy();

   }
}