Tengo una respuesta de flujo como la siguiente:
Estoy usando Laravel como backend
public function stream() { return response()->stream(function() { while (true) { if (connection_aborted()) { Log::debug('aborted'); break; } echo "\nevent: process\n", 'data: {"time": ' . time() . '}', "\n\n"; Log::debug('echoed'); ob_flush(); flush(); sleep(3); } }, 200, [ 'Cache-Control' => 'no-cache', 'Content-Type' => 'text/event-stream', ]); }Interfaz:
let stream = new EventSource(`http://example.test/api/stream`); stream.addEventListener('process', event => { console.log(event.data) }); como muestra el código, se espera que console.log(event.data) cada 3 segundos.
Aunque puedo obtener los registros echoed (pero no los aborted ) en el backend, no puedo obtener ningún resultado en la consola del navegador.
He buscado en Google pero nada ayuda. ¿Cómo ocurrió este error y cómo se puede solucionar?
¡Muchas gracias por cualquier respuesta!
Simplemente agregue un encabezado de respuesta
'X-Accel-Buffering' => 'no'Establecer esto en "no" permitirá respuestas sin búfer adecuadas para las aplicaciones de transmisión Comet y HTTP. Establecer esto en "sí" permitirá que la respuesta se almacene en caché.
Referencias: