IFrame Comet yanıtı hiçbir veri yoktur

0 Cevap php

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.

0 Cevap