Ortamların Hazırlanması

Openfire Kurulumu

İlk olarak Openfire'ı kuruyoruz. kurmanın iki yolu var eğer büyük bir şirketiniz var ve daha sonradan openfire'ı kendi sisteminize dahil etmek istiyorsanız kaynak kodu ile kurmanız ve sonrasında gerekli konfigürasyon işlemleriniz yapmanız tavsiye edilir. Bir diğer yol ise eğer daha sonradan sadece gerekli eklentileri kurup devam edicekseniz ve hiç bir şekilde entegrasyon işlemine ihtiyaç duymayacaksanız ikinci yol olan paket halinde yüklemelisiniz ve devamında ise Hangi Veritabanı Yönetim Sistemini kullanıcağınıza karar vermelisiniz

  • Oracle
  • Microsoft SQL Server
  • PostgreSQL
  • IBM DB2
  • H2SQLDB
  • MySQL

Openfire' ı kendi sitesinden indirebilirsiniz.

Openfire'ın desteklediği veritabanı sistemler aşağıda belirtilmiştir bu arada kendi gömülü veritabanı sistemiyle birlikte gelmektedir. İsterseniz onu ya da harici bir veritabanı yönetim sistemi (aşağıdakilerden biri) ni seçebilirsiniz.

Kaynak kodu halinde indirmek istediğinizde ise iş biraz daha karmaşık hale gelebiliyor. Kaynak kodlarını buradan indirip akabinde gerekli konfigürasyon işlemlerini yaparakkurulumu tamamlayabilirsiniz. Son olarak kurduğunuzda localhost:9090 adresine gittiğimiz de kurum işlemlerini devam ettirerek kurulumu tamamlamalısınız ve sizden yönetici bilgileri isteyecek onu saklalısınız çünkü Panele giriş yaparken o bilgileri sizden tekrar isteyecek. Genelden [email protected] olarak seçilir ve girişte kullanıcı adına sadece admin yazılır. Parola size kalmış.

Spark Kurulumu

Spark bir XMPP istemcisidir. Bizim Smack Api ile yazıcak olduğumuz istemci de Openfire aracılığıyla Spark ile iletişim halinde olucak.

Sparkı'ı kendi sitesinden indirebilirsiniz.

Şimdi yazıcak olduğumuz istemci tarafına geçebiliriz. Yeni bir Java Projesi oluşturuyoruz. Projeye sağ tıklayıp Configure -> Convert to Maven Project deyip oluşturduğunuz projeyi maven projesi haline getiriyoruz ve bize ana dizinde bir pom.xml dosyası oluşturuyor. Bu dosya bağımlılılların yönetildiği bir xml dosyası buraya yazmış olduğunuz bağımlılıklar sayesinde jar dosyası aramaktan kurtuluyorsunuz ve maven sizin yerinize jar dosyasını deposundan çekip projenize dahil ediyor.

Kullanacak olduğumuz Api nin gerekli jar dosyalarını projemize dahil etmek için aşağıdaki bağımlılıkları pom.xml dosyamıza dahil ediyoruz.

    <dependency>
            <groupId>org.igniterealtime.smack</groupId>
            <artifactId>smack-java7</artifactId>
            <version>4.2.0</version>
    </dependency>
    <dependency>
            <groupId>org.igniterealtime.smack</groupId>
            <artifactId>smack-tcp</artifactId>
            <version>4.2.0</version>
    </dependency>
    <dependency>
            <groupId>org.igniterealtime.smack</groupId>
            <artifactId>smack-im</artifactId>
            <version>4.2.0</version>
    </dependency>
    <dependency>
            <groupId>org.igniterealtime.smack</groupId>
            <artifactId>smack-extensions</artifactId>
            <version>4.2.0</version>
    </dependency>
    <dependency>
            <groupId>org.igniterealtime</groupId>
            <artifactId>tinder</artifactId>
            <version>1.2.1</version>
    </dependency>
    <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.5.2</version>
        </dependency>

bunları ekleyip pom.xml dosyasınız kaydettiğimizde Maven Dependencies altında jar dosyalarının oluştuğunu görüceksiniz.

Aşağıdaki kısımda yazmış olduğumuz istemcinin openfire ile iletişime geçmesi için gerekli konfigürasyon işlemleri gösterilmektedir. Bu kısıma geçmeden önce ister Spark tarafında isterseniz de Openfire tarafında kullanıcı oluşturup öyle devam etmeniz tavsiye edilir.

XMPPTCPConnectionConfiguration.Builder configBuilder = XMPPTCPConnectionConfiguration.builder();
configBuilder.setUsernameAndPassword("P0741", "123456"); //İstemcinin giriş yapacağı kullanıcı adı ve parola
configBuilder.setXmppDomain("atomic.sivasdetay.com"); //Domain Adı
configBuilder.setHost("127.0.0.1"); //Host bilgisi
configBuilder.setPort(5222); //Socket'in dinleyeceği port bilgisi
configBuilder.setDebuggerEnabled(true);
configBuilder.setSecurityMode(SecurityMode.disabled);
AbstractXMPPConnection connection = new XMPPTCPConnection(configBuilder.build()); //bağlantı nesnesi oluşturuyoruz.

Biz bu kısımda kendi yerel sunucumuza kurduğumuz için gerekli bilgileri ona göre doldurduk Sunucu bilgilerini aşağı da daha rahat görebilirsiniz.

Bu bilgiler dahilinde

connection.connect();
System.out.println("Sunucuya Bağlandı.");

connection.login();
System.out.println("Login Oldu.");

diyerek openfire'a bağlanıp istemcinizi online konuma çekebilirsiniz. Ve Spark tarafında da farklı bir kullanıcı ile giriş yaptığınız da Panel de Sessions (Oturumlar) kısmından takip edebilirsiniz.

Gördüğünüz üzere 2. Kullanıcının kaynağı Spark yani kullanıcı Spark istemcisinden giriş yaptığını belirmekte 1. Kullanıcı ise bizim oluşturduğumuz istemci. İkisi de şu an da Aktif.

Bu arada Openfire'ı kurarken eğer harici bir veritabanı kullanmak istiyorsanız MySQL ya da farklı bir veritabanı onu sisteminize dahil ettiğinizde openfire adlı bir veritabanı oluşturup XMPP sunucusu kurma aşamasında bunu belirtmelisiniz çünkü openfire kendi tablolarını oluşturmuş olduğunuz veritabanına aktarmaktadır. ve Kullanıcıları ofUser isimli tabloda görebilirsiniz.

Bağlantı işlemleri tamamlandıktan sonra sıra mesajlaşma kısmına geldi. XMPP kendi içerisinde 3 adet paket yönetimi vardır.

Bunlar;

  • IQ (Intelligence Quotient) Paketi
  • Presence Paketi
  • Message Paketi

Message Paketi gerçek zamanlı mesajlaşma da iletişim sağlamak için gerekli paket diğer dosya transferi gibi farklı işlemlerde paket yönetimin de IQ paketleri işinize yarayacaktır. Presence Paketi ise iletişimde halinde bulunduğunuz istemcinin durumunu görebileceğiniz paket yapısıdır. Mesela Çevrimdışı olduğunda bunu görebilmek için kullanılabilir.

Biz ilk etapta Message paketini kullanacağız.

EntityBareJid jid = JidCreate.entityBareFrom("[email protected]/Spark"); // İletişime geçilecek olan istemcinin jid bilgisini ve / ile kaynak bilgisini gösteriyoruz.
Chat chat = chatManager.chatWith(jid);
Scanner sc = new Scanner(System.in);
System.out.println("Bir şeyler yaz.");
while(sc.hasNextLine()) // Console dan sürekli mesaj bekliyor.
chat.send(sc.nextLine()); // Girildiği anda mesajı karşıda ki istemciye göndermk için

Mesajı karşı tarafa gönderdik şimdi de sıra bize gelen mesaj paketlerini dinlemeye geldi.

ChatManager chatManager = ChatManager.getInstanceFor(connection);
chatManager.addListener(new IncomingChatMessageListener() {

    @Override
    public void newIncomingMessage(EntityBareJid from, Message message, Chat chat) {
        System.out.println(message.getBody());

    }
});

Bağlantı oluşturduğumuz referans ile bir ChatManager oluşturuyoruz gerekli geri bildirimleri dinlemek için bu kısımda bize gelen mesaj içeriğini aldık sadece ek olarak kimin gönderdiği

results matching ""

    No results matching ""