PHP + JQuery + HTML + CSS, 1535 bayt
Bu, OP'nin 'gerçek hedef' olarak gördüğü şeye daha fazla eğilen bir sunumdur. Yani, herhangi bir web sunucusunda herhangi bir yerde barındırılabilecek tamamen işlevsel bir sohbet sunucusu.
İşlevsellik şunları içerir:
- Kullanıcılar sohbet odasına girdiğinde veya odadan çıktığında bildirim.
- Kullanıcılar takma adlarını değiştirdiğinde bildirim.
- Aşırı sunucu trafiği veya sunucu yükü oluşturmadan yeni iletiler için gerçek zamanlı yoklama.
- Düzen ve kullanılabilirlik, X-Chat gibi mevcut sohbet istemcilerine çok benziyor.
Oturum olmak için uygun kutuya bir takma ad girin ve göndermek için Tabveya tuşuna basın Enter. Takma ad zaten kullanılıyorsa, size bildirilir. Mesaj gönderme de yoluyla yapılır Enter.

Size kolaylık sağlamak için, tüm dosyaların bir arşivini burada bulabilirsiniz: chat.zip (Dosya menüsünden İndir'i seçin). Yüklemek için PHP 5.4 veya daha üst sürümü çalıştıran herhangi bir sunucudaki bir web dizinini paketinden çıkarın.
Uyarılar:
- IE 8 veya daha düşük bir değer yoklama sırasında sonsuz bir döngüye dönüşür, çünkü insanlık tarafından bilinmeyen bir nedenden dolayı, tüm Ajax istekleri varsayılan olarak önbelleğe alınır. Aynı mesajı iki kez göndermenizi ve kullanıcı listesini düzgün bir şekilde güncellemenizi de önler. Bu,
cache:falseher Ajax isteğine eklenerek düzeltilebilir .
- IE'nin tüm sürümlerinde,
changeolay tetiklenmediği için Enter tuşuna basılarak mesaj gönderilmez (ancak Tab tuşuna basıldığında çalışır). Bu, bir onkeypressişleyici ekleyerek , anahtarın Enter olup olmadığını kontrol edip arayarak düzeltilebilir $(v).blur().focus().
Kısacası, IE desteklenmemektedir.
müşteri
Elemanların konumlandırılması biraz daha sağlam olabilir, ancak yaklaşık ~ 800x600 minimum pencere boyutuyla iyi görünmelidir.
chat.htm (190 bayt)
<script src=jquery.min.js></script>
<script src=c.js></script>
<link rel=stylesheet href=c.css>
<select id=u multiple></select><pre id=o></pre>
<input id=n onchange=u()><input id=v onchange=s()>
c.css (136 bayt)
i{color:#999}
#u{float:right;height:100%;width:200px;margin-left:10px}
#o{border:1px solid #999;height:93%;overflow-y:scroll}
#v{width:54%}
c.js (435 bayt)
var l
(function p(){
$.ajax({url:'p.php',data:{n:$('#n').val()},success:function(d){
$('#o').html(d).scrollTop(1e4);$('#u').load('n.php');
},complete:p,timeout:2e4})
})()
function s(){
$.get('s.php',{n:$(n).val(),v:$(v).val()})
$(v).val('')
}
function u(){
$.get('u.php',{l:i=l,n:l=$(n).val()}).fail(function(){
alert("This name is already in use!")
$(n).val(l=i)
})
}
$(window).on('unload',function(){$.ajax({url:'l.php',data:{l:l},async:false})})
Sunucu
Sunucu çok küçük parçalar halinde ayrılmış olması için özür dilerim. Alternatif, yeterli bir mesaj protokolü (JSON kodlama / kod çözme yoluyla) kullanmak veya if ... elseif ...hangi post değişkenlerinin mevcut olduğuna göre büyük bir büyüklüğe sahip olmaktır. Ayrı komut dosyaları oluşturmak, ihtiyacınız olandan talep etmek çok daha kısa ve belki de her ikisinden daha basittir.
o.php (119 bayt) O 'veritabanındaki bağlantı olarak kalem
<?$m=array_slice(unserialize(file_get_contents(m)),-300);
$u=unserialize(file_get_contents(u));$t=time();extract($_GET);
c.php (57 bayt) Cı ommits 'veritabanındaki değişir
<?foreach([u,m]as$c)file_put_contents($c,serialize($$c));
p.php (151 bayt) p yeni mesajlar için olls
<?for($t=time();@filemtime(m)<$t;usleep(1e3))clearstatcache();include('o.php');
foreach($m as$v)if($n&&$v[0]>=$u[$n])echo@date("[H:i]",$v[0])."$v[1]\n";
s.php (62 bayt) S bir iletiyi sunucuya sonlandırır
<?include('o.php');$m[]=[$t,"<b>$n</b>: $v"];include('c.php');
u.php (222 bayt) , U ser kayıt veya takma değişikliği
<?include('o.php');if(!trim($n)||$u[$n])exit(header('HTTP/1.1 418'));
$m[]=[$t,$u[$l]?
"<i><b>$l</b> is now known as <b>$n</b>.</i>":
"<i><b>$n</b> has entered the chat.</i>"];
$u[$n]=$u[$l]?:$t;unset($u[$l]);include('c.php');
n.php (65 bayt), kullanıcının listesini alır n Ames
<?include('o.php');foreach($u as$k=>$v)echo"<option>$k</option>";
l.php (98 bayt) Kullanıcı sahiptir l EFT (kapalı tarayıcı)
<?include('o.php');$m[]=[$t,"<i><b>$l</b> has left the chat.</i>"];
unset($u[$l]);include('c.php');