44 lines
1.0 KiB
PHP
44 lines
1.0 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace app\api\controller\sse;
|
||
|
|
||
|
use think\Controller;
|
||
|
|
||
|
class Demo extends Controller
|
||
|
{
|
||
|
public function index()
|
||
|
{
|
||
|
// 设置SSE响应头
|
||
|
header('Content-Type: text/event-stream');
|
||
|
header('Cache-Control: no-cache');
|
||
|
header('Connection: keep-alive');
|
||
|
|
||
|
//添加 X-Accel-Buffering=no
|
||
|
|
||
|
header('X-Accel-Buffering: no');
|
||
|
// 禁用输出缓冲
|
||
|
if (ob_get_level() == 0) ob_start();
|
||
|
|
||
|
for ($i = 0; $i < 10; $i++) {
|
||
|
// 构建数据
|
||
|
$data = [
|
||
|
'time' => date('Y-m-d H:i:s'),
|
||
|
'message' => 'hallo word ' . ($i+1)
|
||
|
];
|
||
|
|
||
|
// 发送数据
|
||
|
echo "data: " . json_encode($data, JSON_UNESCAPED_UNICODE) . "\n\n";
|
||
|
|
||
|
// 刷新输出缓冲
|
||
|
flush();
|
||
|
ob_flush();
|
||
|
|
||
|
// 休眠1秒
|
||
|
sleep(1);
|
||
|
}
|
||
|
|
||
|
// 结束连接
|
||
|
echo "data: {\"complete\":true}\n\n";
|
||
|
ob_end_flush();
|
||
|
}
|
||
|
}
|