Тестовый стенд.
Схема такая:
1) Есть компонент на Vue, который кидает в приватный канал сообщение.
Echo.private('lobby-chat')
.whisper('test', {
message: message
});
2) Есть листенер, который слышит это сообщение:
public function handle($event)
{
LobbyMessage::dispatch($event->data->message);
}
и диспатчит эвент.
3) Та же компонента на Vue подписана на канал и слушает его.
Как только приходит — отрисовывает.
Всё
АТЛИЧНАНО!
Есть вот такой роут:
Route::get('/test', function () {
App\Events\LobbyMessage::dispatch('System: test message');
});
Когда я его дёргаю — всё не менее отлично, сообщение приходит на все устройства моментально, т.к. этот эвент имплементирует ShouldBroadcastNow
Однако, если зависперить сообщение с фронта и потом дёрнуть роут — оно думает очень-очень долго, и сообщения приходят со следующим pong в сокетах