2016-04-07 10 views
1

Kodum, sunucudan istemciye her saniye bir olay göndermelidir (Firefox konsolunda düzenli aralıklarla gelmelerini görmeliyim). Ama ben beş olayın hepsini bir kerede alacağım. Niye ya?HTML5 Sunucu Gönderilen Etkinlikler gerçek zamanlı değil mi?

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(); 
?> 

bu konularda ben, Apache ile Ubuntu 14.04 kullanıyorum.

cevap

1

Tek bir küçük farkla sizinkiyle benzer php kodunu kullanan bir example in the MDN buldum, ob_end_flush()'u arıyor.

+0

Teşekkürler! Her ikisini de kullanmam gerektiği gibi görünüyor, ob_end_flush() ve ardından flush() ... garip ... – Rodrigo

+0

php uzun süredir yapmıyorsunuz,) çalışmayı gördüğünüze sevindim. –

+0

Evet, çok uzun değil ... ama bu tuhaf şeyleri görmeye ve düşünmeye başlamaya yetecek kadar _normal _... – Rodrigo

İlgili konular