В laravel 10 используйте такой код:
// PHP используйте Symfony\Component\HttpFoundation\StreamedResponse; поток публичной функции() { $response = новый StreamedResponse(function() { для ($i = 0; $i < 100; $i++) { $json = ['код' => $i]; эхо json_encode($json) . "\n\n"; ob_flush(); румянец(); } }); $response->headers->set('Content-Type', 'text/event-stream'); $response->headers->set('X-Accel-Buffering', 'no'); $response->headers->set('Cach-Control', 'no-cache'); вернуть $ответ; } // js выборка('/тест/поток', { метод: «пост», заголовки: { «Тип контента»: «приложение/json», 'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]')['content'] }, }) .then(ответ => { константный поток = response.body; const decoder = новый TextDecoder('utf-8'); константный читатель = поток.getReader(); return reader.read().then(functionprocessText({сделано, значение}) { если (сделано) { возвращаться; } // console.log(значение) const json = decoder.decode(значение); консоль.log(JSON) вернуть reader.read().then(processText); }) }) Из console.log(json) я вижу, что он выводит несколько строк json за один цикл, и их число не является постоянным. Но в PHP я использую строку flush() в каждом цикле, и она должна немедленно выводить одну строку json, верно?

Мобильная версия