পিএইচপি + জিকুয়ারি + এইচটিএমএল + সিএসএস, 1535 বাইট
এটি ওপিকে 'আসল লক্ষ্য' বলে মনে করে তার প্রতি আরও ঝুঁকানো একটি জমা submission এটি হ'ল একটি সম্পূর্ণ কার্যকরী চ্যাট সার্ভার, যে কোনও জায়গায় যে কোনও ওয়েব সার্ভারে হোস্ট করা যেতে পারে।
কার্যকারিতা অন্তর্ভুক্ত:
- ব্যবহারকারীরা চ্যাট রুমে প্রবেশ বা ছেড়ে যাওয়ার সময় বিজ্ঞপ্তিগুলি।
- ব্যবহারকারীরা যখন তাদের উপনাম পরিবর্তন করেন তখন বিজ্ঞপ্তিগুলি।
- অতিরিক্ত সার্ভার ট্র্যাফিক, বা সার্ভার লোড তৈরি না করেই নতুন বার্তাগুলির জন্য রিয়েল টাইম পোলিং।
- লে-আউট এবং ব্যবহারযোগ্যতা এক্স চ্যাটের মতো বিদ্যমান চ্যাট ক্লায়েন্টগুলির সাথে দৃ strongly়তার সাথে সাদৃশ্যপূর্ণ।
অধিবেশন হওয়ার জন্য, উপযুক্ত বাক্সে একটি উপাধি লিখুন, এবং টিপুন Tabবা Enterজমা দিতে। যদি উপনামটি ইতিমধ্যে ব্যবহারে থাকে তবে আপনাকে অবহিত করা হবে। বার্তা প্রেরণের মাধ্যমেও সম্পন্ন হয় Enter।
![](https://i.stack.imgur.com/jVs1D.png)
আপনার সুবিধার জন্য, সমস্ত ফাইলের একটি সংরক্ষণাগার এখানে পাওয়া যাবে: chat.zip (ফাইল মেনু থেকে ডাউনলোড চয়ন করুন)। ইনস্টল করতে, পিএইচপি 5.4 বা ততোধিক চলমান সার্ভারে একটি ওয়েব ডিরেক্টরিতে আনপ্যাক করুন।
আদেশ সহকারে:
- ভোটদানের সময় IE 8 বা ততোধিকগুলি একটি অসীম লুপে স্পিন করবে কারণ কোনও কারণে মানবতার অজানা কারণে সমস্ত অ্যাজাক্স অনুরোধগুলি ডিফল্টরূপে ক্যাশে হয়। এটি আপনাকে একই বার্তা দুটি বার প্রেরণ, এবং সঠিকভাবে ব্যবহারকারীর তালিকা আপডেট করতে বাধা দেয়।
cache:false
প্রতিটি অ্যাজাক্স অনুরোধে যোগ করে এটি ঠিক করা যেতে পারে ।
- আইই এর সমস্ত সংস্করণে, এন্টার টিপে বার্তাগুলি প্রেরণ করা হবে না, কারণ
change
ইভেন্টটি ট্রিগার করা হয়নি (তবে ট্যাব টিপে টিপলে কাজ করে)। কোনও onkeypress
হ্যান্ডলার যুক্ত করে কীটি এন্টার ছিল কিনা তা পরীক্ষা করে এবং তারপরে ফোন করে এটি ঠিক করা যেতে পারে $(v).blur().focus()
।
সংক্ষেপে, IE সমর্থিত নয়।
মক্কেল
উপাদানগুলির অবস্থান নির্ধারণ করা কিছুটা দৃust় হতে পারে তবে এটি প্রায় 800x600 ডলার ন্যূনতম উইন্ডো আকারের সাথে ঠিকভাবে দেখা উচিত।
chat.htm (190 বাইট)
<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()>
সি সি এস এস (১৩6 বাইট)
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%}
সি.জেএস (৪৩৫ বাইট)
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})})
সার্ভার
আমি এত ক্ষুদ্র অংশে সার্ভার ভেঙে যাওয়ার জন্য ক্ষমাপ্রার্থী। বিকল্পটি হ'ল পর্যাপ্ত বার্তা প্রোটোকল (জেএসওএন এনকোড / ডিকোডের মাধ্যমে) ব্যবহার করা বা if ... elseif ...
পোস্ট ভেরিয়েবল উপস্থিত থাকার সাথে একটি বড় থাকার having পৃথক স্ক্রিপ্ট তৈরি করা, আপনার যা প্রয়োজন তা থেকে কেবলমাত্র অনুরোধ করা অনেক ছোট এবং সম্ভবত উভয়ের চেয়ে সহজ।
o.php (119 বাইটস) হে 'ডাটাবেসের' থেকে সংযোগ হিসেবে কলম
<?$m=array_slice(unserialize(file_get_contents(m)),-300);
$u=unserialize(file_get_contents(u));$t=time();extract($_GET);
c.php (57 বাইট) সি 'ডাটাবেস' এ পরিবর্তনগুলি বাদ দেয়
<?foreach([u,m]as$c)file_put_contents($c,serialize($$c));
নতুন বার্তাগুলির জন্য p.php (151 বাইট) পি ওল
<?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 বাইট) এস সার্ভারে একটি বার্তা শেষ করে
<?include('o.php');$m[]=[$t,"<b>$n</b>: $v"];include('c.php');
u.php (222 বাইট) ইউ সারির রেজিস্ট্রেশন বা ওরফে পরিবর্তন
<?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 বাইট) ব্যবহারকারীর তালিকা আহরণ এন সুপার কম্পিউটার
<?include('o.php');foreach($u as$k=>$v)echo"<option>$k</option>";
l.php (98 বাইট) ব্যবহারকারী l eft (তাদের ব্রাউজার বন্ধ) করেছেন
<?include('o.php');$m[]=[$t,"<i><b>$l</b> has left the chat.</i>"];
unset($u[$l]);include('c.php');