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