问题描述
我正在尝试使用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 (将#修改为@)