Merhaba arkadaşlar, tezim için php de chat programı yapıyorum. Bir tek "yazıyor.." kısmı kaldı. Yani demek istediğim birisi yazı yazmaya başladığında, facebook vb yerlerde ki gibi "yazıyor..." bildirisi çıksın. Kod olarak yardım edemeseniz bile acaba bunu internette ne diye aratabilirim? Neye giriyor bu. Bulamadım bi yardımcı olursanız sevinirim. Hepinize şimdiden teşekkürler.. ^^
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
Script olarak aşağıdaki kodu deneyebilir misin?. Php içerisine entegre edebilirsin. Eğer olmazsa tekrar yaz, kendin araştırmak istersen jquery chat user typing olarak da internette örnekler bulabilirsin.
function checkStatus(){ jQuery.get('/server-url?chat_id=32&status', function(data){ if (data.status == 'typing') $('#yaziyor').html('The agent is typing a message..'); else $('#yaziyor').html(''); checkStatus(); }); }
setTimeout(checkStatus, 300); var client_timer; $('#chatMessage').keyup(function(){ if (client_timer) clearTimeout(client_timer); if ($("#chatMessage").val() == ''){ status = 'empty'; } else { status = 'Yazıyor...'; } client_timer = setTimeout(function(){ $.post('/server-url?chat_id=23', {status: status}, function(data){ }); }, 400); });
şimdi kod yazamıyorum maalesef o yüzden mantığını versem yeterli heralde. üyelerin kayıtlı olduğu tabloya bulunduğu chat odasını gösteren ve şu anda yazıp yazmadığını (boolean türünden ve default değer 0 olmalı) gösteren bir bölüm ekle. üye chat odasına gidiğinde vt'daki üyeler tablosundaki chat odasını gösteren kısma odanın idsini updatele. sonra javascript ve jquery ile kullanıcı klavyeye bastığında (bunun bi event handleri vardı sanırım) ajax ile istek gönder php'ye. Orada gerekli işlemleri yap ve mysql'deki boolean alanına 1 gir ve chat ekranını refreshlerken istedin yere bilmemne adlı kullanıcı yazıyor diye bastır. sonra yine aynı şekilde kullanıcı elini klavyeden çektiğinde (bununda vardı sanırım) yine aynı şekilde phpye istek gönder ve mysqldeki alanı 0'a geri döndür. ve yine bir müddet sonra chat ekranı refreshleneceği için yaziyor kısmını kaldır. ve tadaa. bitti ÖNEMLİ NOT: Bu uzun işlem sitenin kasmasına yol açabilir sürekli isteklerden dolayı. O yüzden nodejs'yi bi araştır derim. not 2: bu mantığı kendin kısaltabilirsin. 10 dklık beyin fırtınası yeter diye düşünüyorum :) umarın yardım edebilmişimdir.
Evet dediğiniz gibi yaptım. Çalıştı, fakat şöyle bir durum var, yalnızca yazdığım sayfada "yazıyor..." iletisi çıkıyor. Aslında demek istediğim, ben yazarken karşımda o ileti çıksın. Onu da aşağı da ki arkadaş anlatmış. Şimdi bir de onu deniyeceğim. Teşekkür ederim..
Amanın! :D Okurken bile beyin fırtınası yaşadım zaten :D :D Gözüm korktu. Veritabanımda şuanlık yalnızca "uye" adlı bir tablo var içeriğindeyse,
id uyeadi sifre rutbe cinsiyet yas mail
sütünları mevcut. (cinsiyet, yas ve mail kısımları var çünkü "kaydol" adlı bir sayfa var ve üye kayıt işlemi yapılıyor.)
Yani demek istediğiniz, ilk olarak "oda" adlı bir tablo açacağım, sonra içine "oda-id" adlı bir sutun ekleyeceğim, daha sonra "uye" tablosuna da "yazma-durumu" ve "oda-id" sutunlarını ekleyip, bunları ilişkilendirecek miyim?
Amanın! :D Okurken bile beyin fırtınası yaşadım zaten :D :D Gözüm korktu. Veritabanımda şuanlık yalnızca "uye" adlı bir tablo var içeriğindeyse,
id uyeadi sifre rutbe cinsiyet yas mail
sütünları mevcut. (cinsiyet, yas ve mail kısımları var çünkü "kaydol" adlı bir sayfa var ve üye kayıt işlemi yapılıyor.)
Yani demek istediğiniz, ilk olarak "oda" adlı bir tablo açacağım, sonra içine "oda-id" adlı bir sutun ekleyeceğim, daha sonra "uye" tablosuna da "yazma-durumu" ve "oda-id" sutunlarını ekleyip, bunları ilişkilendirecek miyim?
evet. bunlar aslında basit şeyler. algoritma bi nevi. o da zaman ile gelişecek :D zaten bir programlama dilinde kaç tane özellik varki. özellikleri ilişkilendiren sensin yani bi düşün :)
Yazıyı yazdıktan sonra Enter a veya gönder butonuna bastıktan sonra yaptığın işlemi zamanlayıp 200 ms de bir yapacaksın bu kadar basit. Dönen string dolu ise yazıyordur, boş ile silmiştir ya da yazmıyordur. Hiç algoritma kurmadınız mı hayatınızda?
Hocam yalnız o 200ms işlemi kastırıyor bi süre sonra bizzat kendim gördüm :D. Onun yerine adam gibi nodejs öğrenip eşzamansız yaparsın. Daha az zorlar ve daha kısa bence.
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.