2016-04-07 3 views
1

Mein Code soll ein Ereignis jede Sekunde vom Server zum Client senden (ich sollte sie in regelmäßigen Abständen in der Firefox-Konsole sehen). Aber ich bekomme alle fünf Ereignisse gleichzeitig. Warum?HTML5 Server gesendet Ereignisse nicht in Echtzeit?

adm.php:

<html> 
<head> 
<script type='text/javascript'> 
var evtSource; 
function btnClick() { 
    evtSource = new EventSource('adm_sse.php'); 
    evtSource.onmessage = function(e) { 
     console.log(e.data); 
     if (e.data == 'end') { 
      evtSource.close(); 
     } 
    }; 
} 
</script> 
</head> 
<body> 
    <button type='button' onclick='btnClick()'>Test SSE</button> 
</body> 
</html> 

adm_sse.php:

<?php 
header("Content-Type: text/event-stream"); 
//header('Cache-Control: no-cache'); // recommended to prevent caching of event data. 
for ($i=0; $i<5; $i++) { 
    echo "data: $i (".date('d/m/Y H:i:s').")\n\n"; 
    flush(); 
    sleep(1); 
} 
echo "data:end\n\n"; 
flush(); 
?> 

Ich bin mit Ubuntu 14.04 mit Apache, wenn es ankommt.

Antwort

1

Ich fand eine example in the MDN, die php-Code ähnlich wie Ihres mit einem kleinen Unterschied verwendet, ruft es .

+0

Danke! Scheint, dass ich beide verwenden muss, ob_end_flush() gefolgt von flush() ... komisch ... – Rodrigo

+0

nicht php für lange tun, bist du;) froh, dass es funktioniert. –

+0

Ja, nicht so lang ... aber genug, um so komische Dinge zu sehen und zu denken, es ist _normal _... – Rodrigo

Verwandte Themen