Laravel SSE 在很长一段时间后开始发送事件

问题描述 投票:0回答:0

我在 php 7.4(产品和本地)的服务器上将 SSE 与 laravel 5.7 集成,但在本地我毫无问题地收到事件,不幸的是,客户端最多可能要等待 10 分钟才能开始接收事件。尤其是在服务器端,根据我的日志,它会在连接打开后立即开始发送事件,我想知道是什么阻止(或缓冲)了一段时间后将它们发送到的结果,什么会使我的服务器在生产中崩溃.

控制器

public function index()
{
    return response()->stream(function () {
            try{
                while(true){
                    Log::info("in".now());
                    echo "data: " . now() . "\n\n";
                    ob_flush();
                    flush();
                    Log::info("out".now());
                    sleep(3);
                }
                                    
            }catch(\Exception $e){
                Log::error($e->getMessage());
            }
            if (connection_aborted()) {break;}


    }, 200, [
        'Content-Type' => 'text/event-stream',
        'Cache-Control' => 'no-cache',
        'Connection' => 'keep-alive'
    ]);
}

Javascript

<script>
  window.onload= function(){
    console.log('loaded')
  var source = new EventSource('{{route("myroute",['transaction_id'=>$payment->trans->id])}}');
  source.addEventListener("message", function(event) {
    const trans = event.data;
    console.log(Date(),trans)

  });
  source.onerror = (e)=>{
    console.log(e)
  }
</script>
javascript php laravel-5 server-sent-events
© www.soinside.com 2019 - 2024. All rights reserved.