Я использую Laravel 5.3 на усадьбе. Вот код, который я использую для трансляции события через толкатель и Laravel эхо, чтобы уведомить пользователей о новом сообщении в режиме реального времени -Pusher и laravel echo слишком медленно или что-то не так с моим кодом?
class NewMessageReceived implements ShouldBroadcast
{
use InteractsWithSockets, SerializesModels;
public $message;
public $user;
public $sender;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(Message $message, User $user)
{
$this->message = $message;
$this->user = $user;
$this->sender = \Auth::user();
}
/**
* Get the channels the event should broadcast on.
*
* @return Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('user.'. $this->user->id);
}
}
Вот код, который называет это событийно
try{
$m = $privateChat->messages()->save($m);
if(isset(Auth::user()->guide))
event (new NewMessageReceived($m, $m->messageable->tourist->user));
else
event (new NewMessageReceived($m, $m->messageable->guide->user));
return $m;
}
catch(Exception $e){
return $e;
}
Существует ajax-вызов в vue, который получает ответ, сгенерированный вышеуказанным кодом, т.е. $ m.
Проблема в том, что я использую следующий код вместо приведенного выше кода, ответ получен не менее чем в 5 раз быстрее. Мне просто нужно, чтобы удалить событие обжига часть, чтобы сделать его работать быстрее (что нежелательно, так как я хочу, чтобы обновить пользователя в режиме реального времени) -
try{
$m = $privateChat->messages()->save($m);
return $m;
}
catch(Exception $e){
return $e;
}
Было бы полезно, если бы вы могли бы мне помочь обнаружить причина этого поведения и как я могу заставить все это произойти в реальном времени, а не существующую сейчас задержку.
Это хорошо для реорганизации существующего кода. Благодаря! Но высказанная выше озабоченность по-прежнему остается нерешенной. Я не использую какую-либо очередность для вышеупомянутой трансляции, и даже если я настрою драйвер очереди (базу данных), трансляция не поставлена в очередь и синхронно срабатывает. Это противоречит инструкциям, приведенным в документации. Возможно, это также причина, по которой она медленная. На данный момент я исправляю эту проблему. –