Всем привет!
Пробую найти решение, когда можно отправлять уведомления клиенту во время выполнения фонового задания.
class SeederController extends Controller
{
public function index()
{
$job = new SeederJob();
dispatch($job);
return response()->json(["status" => "ok"], 200);
}
}
class SeederJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function handle()
{
WebSocketEventService::message("Start...");
WebSocketEventService::testWebSocketProgress();
WebSocketEventService::message("End...");
}
}
class WebSocketEventService
{
static public function message($data)
{
broadcast(new WebSocketEvent([
"message" => $data
]));
}
static public function testWebSocketProgress()
{
$i = 0;
$total = 100000000;
$divisor = $total / 10;
while ($i <= $total) {
if (fmod($i, $divisor) == 0) {
broadcast(new WebSocketEvent([
"process" => "Test...",
"current" => $i,
"total" => $total,
]));
}
$i++;
}
}
}
Но к клиенту уведомления приходят только после того, когда задание полностью выполнится.
Как это можно реализовать так, чтобы уведомления отправлялись сразу же?