Ben Comet ile deney yaşıyorum ve ben ("sonsuza dek çerçeve" gizli IFrame yoluyla uygulanması ile şaşırıp.
Bu benim index.html:
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
cometResponse = function() {
var debugOut = document.getElementById('debugOutput');
return function(response) {
debugOut.innerHTML = response.number;
}
}
</script>
</head>
<body>
<div id="debugOutput"></div>
<iframe src="comet.php"></iframe>
</body>
</html>
Ve bu comet.php dosyası:
<?php
set_time_limit(0);
header('Content-Type: text/html');
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Transfer-Encoding: chunked');
flush();
ob_flush();
$response = '<script type="text/javascript">
parent.cometResponse({
number: %1$d
});
</script>';
for ($i = 0; $i < 2; $i++) {
sleep(1);
$data = sprintf($response, $i);
$output = strtoupper(dechex(strlen($data)))."\r\n".$data."\r\n";
echo $output;
flush();
ob_flush();
}
echo "0\r\n\r\n";
Sayfa yüklendikten sonra, tarayıcı yanıt için "beklemek" gibi görünüyor. Birkaç saniye sonra, Kundakçı bu tepki başlıkları ile boş bir yanıt gösterir:
HTTP/1.1 200 OK
Date: Mon, 26 Jul 2010 09:34:04 GMT
Server: Apache/2.2.14 (Win32) PHP/5.2.12
X-Powered-By: PHP/5.2.12
Cache-Control: no-cache, must-revalidate
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Transfer-Encoding: chunked
Vary: Accept-Encoding
Content-Encoding: gzip
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Type: text/html;charset=ISO-8859-2
Yanıt boş olarak kabul edilir beri, yanıt olmalıdır etiketi ya idam almaz.
Ben "Transfer-Encoding: chunked" kaldırırsanız, ancak başlığı beklendiği gibi, içerik, yazısının sonunda büyük bir parça doğru ama tüm tarayıcıya gönderilir.
Ben sadece burada yanlış neler bulamıyorum.