Я работаю над функцией чата/сообщения для приложения. Когда Пользователь отправляет сообщение, я хочу, чтобы определенное событие было инициировано и транслировалось. Затем я хочу, чтобы Laravel Echo прослушивал широковещательный канал мероприятия на мероприятие через Laravel Echo, используя драйвер pusher
.Событие Laravel не является широковещательным
Я хочу, чтобы реализация Laravel Echo была в компоненте Vue и извлекала данные, которые транслировались через событие. В настоящее время я не могу получить событие для трансляции на личный канал или только на канал.
Вот что я сделал:
1) Добавлен конфиг в .env
.
2) Добавлен конфиг в bootstrap.js
:
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'mykey',
encypted: false
});
3) Добавлен AUTH проверка в App\Providers\BroadcastServiceProvider
(просто возвращает истину, если пользователь подписывается в настоящее время):
Broadcast::channel('chat', function ($user) {
// verify that user is recipient of message
return \Auth::check();
});
4) Добавлена App\Providers\BroadcastServiceProvider::class,
в App/config/app.php
.
5) Создано событие App\Events\UserSentMessage
, которое вещает на PrivateChannel
с именем chat
. Я также пытался транслировать до Channel
. Я проверил, и событие запускается из вызова помощника event()
в контроллере, он просто не транслируется. Я также попытался использовать метод broadcast
в упомянутом контроллере.
6) Добавлены следующие в Вью крюком жизненного цикла mounted
в действительный компонент Вью (компонент представления данных и т.д., как и ожидалось, просто не работает с Laravel Echo атм):
Echo.private('chat').listen('UserSentMessage', (data) => {
console.log(data);
}, (e) => {
console.log(e);
});
также пытались:
Echo.channel('chat').listen('UserSentMessage', (data) => {
console.log(data);
}, (e) => {
console.log(e);
});
Компонент Vue успешно подписывается на указанный канал. Пульт отладки толкателя признал, что он подписывается, но событие, когда оно срабатывает, никогда не транслируется.
Похоже, что существует проблема с трансляцией события. Я также попытался использовать вспомогательный помощник broadcast()
, а не помощник event()
.
Также, подписка на мероприятие с использованием Laravel Echo через Echo.private()
. Кажется, он префикс имени канала private
, поэтому я также пробовал трансляцию (в случае) на канал с именем private-chat
.
Отлично! Большое спасибо! – AshMenhennett