I am integrating the SSE with laravel 5.7 on a server in php 7.4 (prod&local) but locally I receive the events without problem, unfortunately the client can wait up to 10 minutes to start receiving the events. And especially on the server side according to my logs, it starts sending the events as soon as the connection is opened, I wonder what could be blocking (or buffering) the results for sending them to after some time what can crash my server in prod.
Controller
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('');
source.addEventListener("message", function(event) {
const trans = event.data;
console.log(Date(),trans)
});
source.onerror = (e)=>{
console.log(e)
}
</script>
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire