Friday, April 22, 2011

Membangun instant messenger sendiri

4/22/2011 04:40:00 AM

Instant messaging merupakan fasilitas komunikasi chatting untuk para pengguna internet. Dengan menggunakan fasilitas ini, user dapat berkomunikasi dengan cara mengirimkan pesan berupa text dengan user lain. Selain itu, Instan Messaging juga berfungsi untuk tukar menukar file secarapeer to peerSaat ini Instan Messaging yang terkenal adalah Yahoo Messenger dan MSN Messenger. Namun kita dapat membuat Instan Messanger sendiri menggunakan protokol Jabber serta aplikasi yang Open Source dan serta memodifikasi client sesuai dengan keinginan kita. Bahkan saat ini, Google mengembangkan Instan Messengernya,Gtalk, yang juga berbasiskan protokol XMMP (Jabber).


Protokol XMMP (Jabber)
Dalam perancangan sistem Instant Messaging ini, penulis menggunakan sistem berbasis Jabber yang merupakan sistem open source dan sudah banyak digunakan oleh berbagai komunitas. Jabber adalah protokol eXtended Markup Language (XML) yang terbuka yang berfungsi sebagai pertukaran pesan dan kehadiran antara dua host dalam internet. Implementasi pertama dari Jabber adalah Instant Messenger yang mempunyai fungsi yang sama seperti IM yang sudah ada seperti ICQ, AOL, MSN dan Yahoo messenger[1]. Jabber menawarkan beberapa keuntungan dibandingkan IM yang lainnya, antara lain:
  • Open. Protokol Jabber adalah free, terbuka, publik dan mudah dimengerti serta banyak implementasi open-source yang sudah dan sedang dikembangkan meliputi Jabber server, Jabber client dan tools lainnya.
  • Extensible. Basis XML memudahkan Jabber untuk dikembangan ke aplikasi lainnya untuk fungsi yang lain. Pengembangan yang umum diatur oleh Jabber Software Foundation.
  • Decentralized. Setiap orang bisa membuat Jabber server sendiri.
  • Secure. Jabber server bisa dibuat terisolasi dari jaringan lain, juga komunikasi SSL dapat diimplementasikan selain komunikasi end-to-end yang bisa menggunakan PGP/GPG.
Sebagai usaha menjadikan Jabber sebagai protokol standar Instant Messaging, pada Juni 2000 komunitas Jabber telah mempublikasikan protokol tersebut sebagaiRequest for Comment (RFC) pada Internet Engineering Task Force (IETF) sebagai bagian dari standar Instant Messaging and Presence Protocol (IMPP), tetapi IMPP ini tidak berjalan sukses. Pada bulan Mei 2001, Jabber Community dan Jabber Inc. membuatJabber Software Foundation untuk menyediakan asisten organisasi secara langsung (direct organizational assistance) dan asisten teknis secara tidak langsung terhadap komunitas Jabber.
Pada tahun 2002, Internet Engineering Steering Group (IESG) menyetujui formasi Extensible Messaging and Presence Protocol Working Group (XMPP) denganInternet Engineering Task Force (IETF). Ruang lingkup working group adalah untuk mengeksplorasi dan dimana protokol tersebut digunakan, memodifikasi protokol yang sudah ada agar dapat memenuhi RFC 2799 seperti persyaratan yang ditentukan dalam spesifikasi Common Presence and Instant Messaging (CPIM). Fokus utama working group adalah membuat XML stream termasuk stream pada level security dan autentikasi, elemen data dan namespace yang dibutuhkan untuk mencapai dasar IM dan Presence[2]. XMPP working group menerbitkan XMPP Core Internet-Draft sebagai dokumen yang menggambarkan fitur-fitur utama Extensible Messaging dan protokolPresence.

Arsitektur Jabber
Arsitektur Jabber
gambar diambil dari http://oficinalibre.net

Jabber menggunakan arsitektur client-server, bukan arsitektur langsung peer-to-peerseperti yang digunakan oleh sistem messaging lainnya. Akibatnya, seluruh data Jabber dikirim dari satu client ke client lainnya harus melewati minimal satu server Jabber.Client Jabber terhubung pada sebuah server Jabber pada TCP melalui port 5222. Koneksi ini selalu on untuk session client yang berjalan pada server, artinya client tidak dapat mengumpulkan pesan sebagai sebuah email client. Sebuah pesan diharapkan tersedia pada client dan dengan segera diharapkan client messenger sepanjang clientmasih terhubung. Server akan dapat menjajaki (tracking) apakah client masih onlineatau tidak, dan ketika client dalam kondisi off-line akan menyimpan beberapa pesan yang telah dikirim kepada client untuk menyediakan kapan dia akan terhubung lagi.
Kekhasan yang dimiliki oleh protokol Jabber antara lain modular server dan simple client yang penjelasannya sebagai berikut :
1. Modular server
Server Jabber memiliki tiga peranan utama yaitu :
  • Menangani koneksi client dan berkomunikasi secara langsung dengan client Jabber
  • Berkomunikasi dengan server Jabber yang lain
  • Mengkoordinasikan beragam komponen server yang diasosiasikan dengan server
Server Jabber di desain modular, dengan paket kode internal yang khusus sehingga dapat menangani fungsionalitasnya seperti registrasi, auntentikasi, presentcontact list, penyimpanan pesan yang berstatus off-line dan sebagainya. Selain itu server Jabber dapat dikembangkan dengan komponen eksternal yang memungkinkan administrator server untuk mensuplemen server pusat dengan layanan tambahan semacam gerbang untuk sistem messaging lainnya.
2. Simple client
Satu kriteria desain sistem Jabber bahwa ia harus memiliki kemampuan untuk mendukung client yang sederhana misalnya koneksi telnet pada port yang benar. Dalam hal ini tentu saja arsitektur Jabber memberikan sedikit batasan pada client.Task-task pada client Jabber harus dapat mengenal dan melengkapi :
  • Komunikasi dengan server Jabber melalui soket TCP
  • Melakukan parsing dan interpretasi XML dengan format yang baik melalui XML stream
  • Memahami tipe data utama Jabber (messagepresence dan iq)
Keuntungan di dalam Jabber adalah dapat memindahkan kompleksitas dari client ke server. Secara praktis, banyak fungsi yang low-level pada client seperti proses parsingXML dan memahami tipe data core Jabber yang ditangani oleh library-library client Jabber, memungkinkan client developer untuk fokus pada user interface [2]
Instalasi Server Instant Messengger
Ada beberapa program yang dapat dijadikan Server yang digunakan pada sistem Instant Messaging ini. Yang pertama adalah ejabberd yang dikembangkan menggunakan bahasa pemrograman Erlang dan jive messenger yang berbasis java serta menggunakan database mysql. Selain itu, dapat pula menggunakan jabberd.
Setelah mencoba menginstall dan membandingkan beberapa program tersebut, penulis memilih untuk menggunakan ejabberd karena kemudahan instalasi dan administrasi serta sangat stabil untuk digunakan dalam skala besar. Namun, penulis juga menyarankan untuk mencoba menggunakan jive messenger yang sangat mudah di instal dan administrasi yang mudah dengan berbasis web, namun karena menggunakan java sehingga membutuhkan resource yang cukup besar. Selain itu karena database yang digunakan menggunakan mysql, maka kita dapat melakukan modifikasi dengan menggunakan bahasa pemrograman PHP. Untuk daftar server selengkapnya dapat dilihat di http://www.jabber.org/software/servers.shtml
Sebelum melakukan instalasi ejabberd, dibutuhkan beberapa paket yang harus di instal terlebih dahulu. Tanpa program ini, ejabberd tidak akan berjalan dengan baik atau tidak akan berjalan sama sekali. Dalam perancangan sistem Instant Messaging ini, Ejabberd diinstal menggunakan Sistem Operasi Redhat 9. Paket yang dibutuhkan antara lain :
  • GNU Make
  • GCC
  • libexpat 1.95 atau versi diatasnya
  • Erlang/OTP R8B atau versi diatasnya
  • OpenSSL 0.9.6 atau versi diatasnya (opsional).
Setelah semua paket terinstal, download source ejabberd di sini. Ambil versi yang terbaru (pada saat ini dibuat masih versi 9.8.0). Setelah itu ekstrak file ejabberd dengan perintah :
tar xzvf ejabberd-0.9.8.tar.gz
Setelah di ekstrak, masuk ke direktori ejabberd dengan mengetikkan perintah
cd ejabberd-0.9.8
Tahap selanjutnya yaitu kompilasi file source yang telah di ekstrak tadi. Perintah yang digunakan yaitu :
./configure
make
make install (harus dengan root)
Proses ini akan menginstal ejabberd dalam direktori /var/lib/ejabberd, sedangkan file ejabberd.cfg akan di instal di direkori /etc/ejabberd. Lalu akan dibuat direkotori/var/log/ejabberduntuk file log.
Test program hasil kompilasi :
erl -pa /var/lib/ejabberd/ebin -name ejabberd -s ejabberd
Apabila ingin dijalankan sebagai background (daemon) tambahkan perintah –detached
erl -pa /var/lib/ejabberd/ebin -name ejabberd -s ejabberd -detached
Cara yang terbaik untuk menjalankan ejabberd adalah dengan membuat file dengan konfigurasi tertentu. Contohnya dengan membuat sebuah file yang diberi namaejabberd dan diberi permission untuk dieksekusi (755). Isi file tersebut adalah :
!#/bin/bash
# script sederhana untuk menjalankan ejabberd dengan konfigurasi
# tertentu
erl -pa /var/lib/ejabberd/ebin
-sname ejabberd \
-s ejabberd \
-ejabberd config \”/etc/ejabberd/ejabberd.cfg\” \
log_path \”/var/log/ejabberd/ejabberd.log\” \
-sasl sasl_error_logger \{file,\”/var/log/ejabberd/sasl.log\”\}\
-mnesia dir \”/var/lib/ejabberd/spool\” \
-detached
Untuk dapat melakukan koneksi lebih dari 1024 user, maka variable ERL_MAX_PORTS harus di set sebagai berikut.
export ERL_MAX_PORTS=32000

Konfigurasi ejabberd
Untuk melakukan konfigurasi, maka file ejabberd.cfg yang terdapat dalam direktori /etc/ejabberd harus di edit. Untuk mengeditnya, gunakan editor vi atau yang lainnya.
vi /etc/ejabberd/ejabberd.cfg
Hal yang perlu di edit :

· Host Names

Opsi hosts mendifiniskan nama domain jabber yang digunakan oleh ejabberd sebagai server. Misalkan nama server yang digunakan adalah i2.co.id, maka ganti baris berikut :
% Host name(s):
{hosts, ["localhost"]}.
Dengan
{hosts, ["chaidirabadi.org"]}.
· Akses admin
Untuk memberikan akses admin kepada user, maka edit baris seperti contoh berikut :
% Users that have admin access. Add line like one of the following after you
% will be successfully registered on server to get admin access:
{acl, admin, {user, “chaidir”}}.
%{acl, admin, {user, “lintar”}}.
Jangan lupa menghilangkan tanda % agar tidak dikenali sebagai comment. Pada contoh diatas user chaidir mendapatkan akses sebagai admin, sedangkan user lintar belum mendapatkan akses admin karena masih baris tersebut masih di comment. Akses admin ini sangat berguna untuk melakukan administrasi via web.
· Welcome message
Setiap user yang beru mendaftar akan mendapatkan welcome message. Untuk mengganti welcome message, maka edit baris berikut :
% After successful registration user will get message with following subject
% and body:
{welcome_message,
{“Welcome!”,
“Selamat datang di aCh Messenger
. 
“Untuk informasi lebih lanjut silakan lihat dihttp://chaidirabadi.org”}}.
% Replace them with ‘none’ if you don’t want to send such message:
%{welcome_message, none}.
Ganti welcome message sesuai dengan keinginan kita.
Untuk konfigurasi selebihnya dapat dilihat pada file /etc/ejabberd/ejabberd.cfg


Administrasi via web
-Untuk administrasi via web, kita dapat mengkasesnya dengan alamat http://namaserver:5280/admin. Lalu login dengan user yang mempunyai akses admin (dalam contoh diatas user chaidir). Jangan lupa login dengan “@” (contoh : chaidir@chaidirabadi.org).
ejabberd

Client Instant Messenger
Untuk mencoba server yang telah dibuat, kita dapat menggunakan client Instant Messenger yang mendukung protokol jabber, antara lain GaimExodusPsi untuk Windows serta Adium untuk Mac OS. Apabila ingin membuat client sendiri, anda dapat memodifikasi program yang berbasis Open Source seperti ExodusExodusmenggunakan bahasa pemrograman Delphi menggunakan Borland Delphi 7 sehingga dapat dimodifikasi dengan mudah. Berikut adalah contoh tampilan client Instant Messenger hasil modifikasi Exodus :
Gambar tampilan utama i2Messenger

i2messenger31.JPG

Gambar jendela chat

Update : Sekarang anda dapat menginstall ejabberd dengan sangat mudah. Dengan waktu 3 menit kini anda dapat menginstall ejabberd. Silahkan lihat Video Tutorial cara menginstall ejabber dalam 180 detik http://www.process-one.net/tutorials/ejabberd_setup_linux_en_viewlet_swf.html.
Referensi :
1. http://www.jabber.org “What Is jabber,” www page, 2003,.
2. Iain Shigeoka, Instant Messaging in Java The Jabber Protocols, Manning Publications Co., 2002.
3. J. Miller P. Saint-Andre, “XMPP Core Draft-IETF-XMPP-Core-12” www page, May 2003, Expire on November 2, 2003.

Diposting oleh

Berbagi informasi untuk semua. Internet, desain grafis, software dan lain sebagainya. Semuanya bebas untuk dinikmati disini. Jangan lupa tinggalkan komentar agar blog ini semakin maju dan tetap hidup. Terima kasih.

1 tanggapan, kritik, saran, serta komentar.:

  1. I like it when folks get together and share ideas. Great blog, continue the good work!
    My blog post Credit Repair Reviews

    ReplyDelete


 

© 2014 Saonone's. All rights resevered. Designed by Templateism

Back To Top