Я пытаюсь использовать отправленное сервером событие с laravel, но у меня проблема с выводом.
Мой контроллер:
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
header("Connection: keep-alive");
$time = date('r');
echo "data: The server time is: {$time}\n\n";
flush();
ob_end_flush();
sleep(5);
$time = date('r');
echo "data: The server time is: {$time}\n\n";
flush();
ob_end_flush();
И мой js:
var source = new EventSource('edit/steps');
source.addEventListener('message', function (e) { ... }, false);
Проблема в том, что данные выводятся только в конце.У меня нет первого выхода, то через 5 секунд, секунд.Только два после 5 секунд.
Я попробовал «ob_flush» вместо «ob_end_flush», но он не работает.
Кто-то видит, в чем проблема?
Спасибоза вашу помощь.
Редактировать:
Этот код работает:
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
header("Connection: keep-alive");
ob_implicit_flush(1);
for($i=0; $i<10; $i++){
echo $i;
//this is for the buffer achieve the minimum size in order to flush data
echo str_repeat(' ',1024*64);
sleep(1);
}
Но я видел только $ i.Как только я изменяю или добавляю что-то в $ i, он перестает работать.