Laravel服务器发送事件

时间:2018-09-25 09:20:51

标签: php laravel

我正在尝试将服务器发送的事件与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添加内容,它就会停止工作。

0 个答案:

没有答案