Laravel的StreamedResponse无法与javascript的EventSource一起使用

问题描述

我正在尝试使用Laravel中的StreamedResponse来流式处理文本输出,但是我的javascript并未获取任何消息...为了使代码更短,我简化了这种情况。

首先我有一些命名的路线:

Route::any('sync-database','SyncController@syncDatabase')->name('sync.database');

然后我的控制器中有 syncDatabase()方法,该方法有效且不会引发错误

public static function syncDatabase()
{
  ob_start();
  $response = new StreamedResponse(function(){

    foreach($someIterableObject as $index => $database){
      $database->sync();
      echo "Database $index synced";
      ob_flush();
      flush();
    }


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

  return $response;
}

最后一件事是我的前端(javascript):

let es = new EventSource('{{ route('sync.database') }}');

es.onmessage = function(event){
  console.log(event.data);
}

问题是我的JavaScript没有收到任何消息,我也不知道为什么。预期结果将是:

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)