Estoy tratando de enviar actualizaciones al lado del cliente usando SSE, pero cuando activo el evento en el lado del servidor, los nuevos datos no se envían al lado del cliente.
Mi código del lado del cliente:
<script> $(document).ready(function($) { var lastMsg = ''; const source = new EventSource("/misc/getData"); source.onmessage = function(event) { console.log(event); var data = JSON.parse(event.data); if (data !== lastMsg) { $('#result').empty(); $('#result').append('Result: ' + data); lastMsg = data; } }; }); </script>Mi código del lado del servidor (clase Laravel)
<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Auth; use Illuminate\Http\Request; class MiscController extends Controller { private $data; public function __construct() { $this->data = ''; } public function sendContent(Request $request) { $content = $request['content']; if (!is_null($content)) { $this->data = "data:". $content ."\n\n"; } $this->getData(); } public function getData() { return response($this->data)->withHeaders(['Content-Type'=>'text/event-stream', 'Cache-Control'=>'no-cache']); } } No se muestran errores, los encabezados se ven bien en la consola del navegador, pero no puedo obtener los datos cuando están configurados por el lado del servidor.
Otras clases llaman al método sendContent en el lado del servidor o desde el lado del cliente usando AJAX, para establecer el contenido que debe reflejarse en la interfaz de usuario.
Sin embargo, la función onmessage en el lado del cliente nunca lo recibe.
También intenté usar un método estático para recibir el contenido como parámetro, pero fue en vano.
¿Qué me estoy perdiendo?