PHP + JQuery + HTML + CSS, 1535 바이트
이것은 OP가 '실제 목표'로 간주되는 것에 더 집중된 제출입니다. 즉, 거의 모든 웹 서버에서 호스팅 할 수있는 모든 기능을 갖춘 채팅 서버입니다.
기능은 다음과 같습니다.
- 사용자가 대화방에 입장하거나 떠날 때 알림.
- 사용자가 별명을 변경할 때 알림
- 과도한 서버 트래픽이나 서버로드를 생성하지 않고 새 메시지에 대한 실시간 폴링.
- X-Chat과 같은 기존 채팅 클라이언트와 매우 유사한 레이아웃 및 유용성
세션 인하기 위해, 해당 상자에 별칭하고 Enter 키를 누르 Tab거나 Enter제출합니다. 별칭이 이미 사용중인 경우 알림이 표시됩니다. 메시지 전송은을 통해서도 수행됩니다 Enter.

편의를 위해 모든 파일의 아카이브는 chat.zip (파일 메뉴에서 다운로드 선택)에 있습니다. 설치하려면 PHP 5.4 이상을 실행하는 서버의 웹 디렉토리에 압축을 푸십시오.
주의 사항 :
- IE 8 이하는 폴링 중에 무한 루프로 회전합니다. 어떤 이유로 인해 인간에게 알려지지 않은 이유로 모든 Ajax 요청이 기본적으로 캐시되기 때문입니다. 또한 동일한 메시지를 두 번 보내고 사용자 목록을 올바르게 업데이트하지 못하게합니다.
cache:false모든 Ajax 요청 에 추가하면이 문제를 해결할 수 있습니다 .
- 모든 버전의 IE에서
change이벤트가 트리거되지 않으므로 Enter 키를 눌러도 메시지가 전송 되지 않습니다 (그러나 Tab 키를 누르면 작동 함). onkeypress핸들러 를 추가 하고 키가 Enter인지 확인한 다음을 호출하여이 문제를 해결할 수 있습니다 $(v).blur().focus().
즉, IE는 지원되지 않습니다.
고객
요소의 위치는 좀 더 견고 할 수 있지만 최소 창 크기는 약 ~ 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()>
c.css (136 바이트)
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 바이트)
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})})
섬기는 사람
서버가 너무 많은 작은 덩어리로 분해되어 죄송합니다. 대안은 적절한 메시지 프로토콜 (JSON 인코딩 / 디코딩을 통해)을 사용하거나 if ... elseif ...존재하는 포스트 변수에 따라 큰 메시지를 사용하는 것 입니다. 별도의 스크립트를 작성하는 것만으로 필요한 스크립트를 요청하는 것이 훨씬 짧고 아마도 두 가지보다 간단합니다.
o.php (119 바이트) O '데이터베이스'에 연결하는 펜
<?$m=array_slice(unserialize(file_get_contents(m)),-300);
$u=unserialize(file_get_contents(u));$t=time();extract($_GET);
c.php (57 bytes) C 는 '데이터베이스'에 대한 변경을 생략합니다.
<?foreach([u,m]as$c)file_put_contents($c,serialize($$c));
p.php (151 바이트) P의 새 메시지 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 바이트) S 는 서버에 메시지를 종료
<?include('o.php');$m[]=[$t,"<b>$n</b>: $v"];include('c.php');
u.php (222 바이트) U의 SER 등록 또는 별칭 변경
<?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 bytes) 사용자 n ames 목록을 검색합니다
<?include('o.php');foreach($u as$k=>$v)echo"<option>$k</option>";
l.php (98 바이트) 사용자가 리터의 송금 (폐쇄 브라우저를)
<?include('o.php');$m[]=[$t,"<i><b>$l</b> has left the chat.</i>"];
unset($u[$l]);include('c.php');