Saturday, June 27th, 2009

Web Chat – Facebook Like

Web Chat – Facebook Like

Melihat web chat facebook mantep banget deh, pengen coba bikin tetapi mau diimplementasi dimana ya ? bingung juga. Kebetulan bos lg punya ide bikin sesuatu jadi deh kepikiran gimana kalau ditambahin web chat.

Konsep nya mirip seperti facebook, yang berbeda jika facebook person-to-person chat box, kalau saya mau bikin seperti biasa yaitu chat-room, tetapi tidak terbatas. Dari segi UI saya ambil contoh dari facebook beserta gambar – gambarnya, mudah-mudahan gak di komplen karena ini tidak dijual, yaitu hanya sebagai bahan pengetahuan publik mengenai bagaimana cara membangun Web Chat seperti yang diimplementasi oleh facebook.

Teknologi dan Konsep yang akan kita gunakan adalah : Apache, PHP, MySQL, Javascript, jQuery, JSON, XHTML/DHTML, CSS

Jadi mari kita mulai !!!!!!


Tempat Penyimpanan Interaksi Chat

Kita akan membuat 4 buah tabel :

1. chat_activity

2. chat_user_activity

3. chat_user_last_activity

4. chat_user_room

SQL Statement nya sebagai berikut :

CREATE TABLE IF NOT EXISTS `chat_activity` (
`activity_unid` bigint(15) NOT NULL auto_increment,
`room_unid` char(15) NOT NULL default '0',
`sender_unid` char(15) NOT NULL default '0',
`message` varchar(255) NOT NULL,
`date` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY  (`activity_unid`,`room_unid`,`sender_unid`,`date`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `chat_user_activity` (
`i_activity` bigint(15) NOT NULL default '0',
`user_unid` char(15) NOT NULL,
`activity_type` tinyint(1) NOT NULL default '1',
`activity_unid` char(15) NOT NULL default '0',
`room_unid` char(15) NOT NULL default '0',
PRIMARY KEY  (`i_activity`,`user_unid`,`activity_unid`,`room_unid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `chat_user_last_activity` (
`user_unid` char(15) NOT NULL,
`i_activity` bigint(15) NOT NULL default '0',
PRIMARY KEY  (`user_unid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `chat_user_room` (
`user_unid` char(15) NOT NULL default '0',
`room_unid` char(15) NOT NULL default '0',
`room_name` char(100) NOT NULL,
`nickname` char(20) NOT NULL,
`typing` tinyint(1) NOT NULL default '0',
`active` tinyint(1) NOT NULL default '0',
`i_activity` bigint(15) NOT NULL,
`last_active` datetime NOT NULL default '0000-00-00 00:00:00',
`current_active` datetime NOT NULL default '0000-00-00 00:00:00',
`last_get_activity` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY  (`user_unid`,`room_unid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Struktur Folder

<folder_anda>/

—— images/

—— css/

—— js/

—— services/

Images

Chat-Images.zip

Ekstrak isi dari file diatas kedalam folder images/

CSS

CSS.zip

Ekstrak isi dari file diatas kedalam folder css/

JS

JS.zip

Ekstrak isi dari file diatas kedalam folder js/

Services

Services.zip

Config

Buat sebuah file dengan nama config.php dan simpan kedalam <folder_anda>, dengan isi sebagai berikut :

<?php

/* LOKASI SERVER MYSQL */
$db['hostname'] = "localhost";
/* USER SERVER MYSQL */
$db['username'] = "root";
/* PASSWORD SERVER MYSQL */
$db['password'] = "p";
/* DATABASE YANG AKAN DIPAKAI */
$db['database'] = "chat";

?>

HTML

<a href="http://www.feelinc.me/wp-content/uploads/index.zip" target="_self">index.html</a>

Copy file diatas kedalam <folder_anda>.

Pada file html ini harus dilakukan sedikit konfigurasi sesuai dengan tempat anda menyimpan web chat ini, yaitu pada bagian :

var _path = "";

Saya menggunakan subdomain http://chat.nowhere.com, maka tidak diperlukan perubahan.

Jika anda menggunakan seperti http://localhost/chat, maka harus dilakukan perubahan menjadi :

var _path = "/chat/";

DONE!!!!

Sekarang silahkan dicoba web chat anda, ada sedikit peraturan ketika menggunakan web chat ini yaitu ketika pertama kali menjalankan langkah nya :

1. Isi NickName yang anda inginkan

2. Kemudian pijit tombol Start Chat, kemudian tunggu sebentar, tidak akan memakan waktu lama jika menggunakan server lokal paling kurang dari 20 detik. Identifikasi proses initialisasi belum diterapkan, jika anda menginginkan silahkan tambahkan.

3. Kemudian pilih salah satu link yang tersedia : Store 1, Store 2, Store 3, dsb. Link – link tersebut digunakan sebagai Chat Room. Anda bisa menambahkan room – room lainya sebanyak mungkin dengan mengedit index.html, seperti :

<a href="#" onClick="chatOpen('1', this.innerHTML);return false;">Store 1</a>

Untuk melakukan uji coba lebih dari 1 user pada 1 komputer anda harus menggunakan browser yang berbeda, karena user-id disimpan pada cookie.

Web Chat ini untuk sementara baru bisa berjalan pada browser – browser tertentu, seperti :

- Firefox 3.x

- Safari 4 beta, Safari versi kurang dari 4 belum dicoba

- Opera 10 beta, Opera versi kurang dari 10 belum dicoba

Pada browser yang lain masih ditemukan masalah pada UI, tinggal memperbaiki CSS.

Terima Kasih, semoga bermanfaat.

FYI, artikel ini hanya untuk Web Developer, yang sudah mengenal javascript, AJAX, juga sudah sering menggunakan Web Developer Tools (firebug, web developer, etc).

“People Always Forget How Fast We Did A Job, But They Will Remember How well We Did It”


Category: Research
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

20 Responses

June 29, 2009

keren banget tutorialnya.. keep posting gan.. thanks..


June 30, 2009
1sn0where

sama – sama, moga bermanfaat


July 5, 2009
1sn0where

Maaf jika ada yang sudah mencoba dan memasang tetapi tidak berjalan dengan sempurna.

Ada sedikit perubahan pada Services.zip, silahkan di download lg.

Karena web chat sebelumnya memakai Codeigniter, dan yang ini saya rubah menjadi standar ………


July 28, 2009
hrradyt

hebat kang, tutorialnya,,,, :D

kpn sya bisa kyk akang ea…. heehhehe

sukses slalu kang…

hikmat


August 26, 2009
toshi

hehe..

kereenn nie kayax..
cobaa aaahh..

arigatoo.


October 10, 2009
darma

koq error bang


October 10, 2009

error apanya ya, yg jelas dong kayak biar gampang ditindaklanjuti ?
bagian mana ?
screen-shoot nya ada ?
waktu mau ngapain, langkah2nya ?


October 13, 2009
didu

error kang di index.html ga bisa buat nickname, muncul dialog jquery “error”.. kmh tah kang….


October 13, 2009

brarti, konfigurasi nya masih salah,
udah di setting yg saya jelaskan dibagian Config sama HTML ?
coba cek pake firebug, karena itu pasti path nya yg salah.


October 16, 2009
lutfi[an]syah

muncul pop up ERROR keterangannya parsererror.
kira2 salah dimana ya? thnks


October 16, 2009

sama seperti yang sebelumnya. brarti, konfigurasi nya masih salah,
udah di setting yg saya jelaskan dibagian Config sama HTML ?
coba cek pake firebug, karena itu pasti path nya yg salah.
atau jika di pasang online, maka koneksi nya putus.


October 17, 2009

hi guys thank you ya, punya skrip chat-nya doang yang pake javascript aja atau skrip chat apa aja deh, mau dong? dimana saya bisa ambil


November 29, 2009
fxcs

mas error mas, pas masukin nickname saya tunggu 20 detik terus pas klik store1 ada tulisan
error
parseerror


November 29, 2009

coba cek pake firebug error nya krna apa


November 30, 2009
fxcs

bagaimana cara menggunakan atau instalasi firebug saya belum tau.mohon penjelasannya.
tapi mas saya dah ubah var _path = “/chatting/”;
tapi tetep ada muncul pop up ERROR keterangannya parsererror.


December 5, 2009
Chan

waduh nice info neh.. makasih banyak ntar sy coba kembangin lagi.
Btw kalo buat notification kaya facebook apakah prinsipnya sama juga ato gimana yaa?

@fxcs : firebug adalah add-on di firefox, masuk aja ke menu Tools > Add-ons, kemudian ketik firebug, maka dia akan cari filenya kemudian kalo dah muncul tinggal di install aja


December 5, 2009

siip sama2,
yup sama juga sih konsepnya, diusahakan untuk semua interaksi realtime ajax notification disatuin, biar gak makan resource terlalu banyak.


January 2, 2010

Thx infonya, Mas ada demonya ga??
Soalnya saya lgi nyari Chat Plugin yg mirip2 Fb kayak di http://www.fbemoticons.com,


January 3, 2010
Thunils

Makasih tutor nya bang,
Uda berhasil………..


February 6, 2010
yan yan

tulisan yang sangat bagus….


Switch to our mobile site