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