Это было давней проблемой некоторое время, и прежде чем я начну, вот что я попробовал и где я искал решение.
Несколько вещей, которые я пробовал
Я убедился, что мой кластер был правильным для приложения, которое я использую:
https://laracasts.com/discuss/channels/laravel/pusher-is-not-receiving-my-message?page=1
Мой кластер eu
Я перепробовал все варианты пространств имен:
https://laracasts.com/discuss/channels/laravel/echo-broadcast-event-listener-not-being-triggered
.App.Events.DefaultPusherEvent
, App\Events\DefaultPusherEvent
, .DefaultPusherEvent
так далее…
Мой сценарий
Поэтому я пытаюсь справиться с обновлениями в реальном времени, используя Laravel и Pusher, чтобы в конечном итоге я смог реализовать уведомления в реальном времени + все, что нам нужно в будущем.
Я получил возможность транслировать на приложение-толкач, следуя документации Laravel.
Так что все в порядке, никаких проблем нет, единственная проблема, с которой я столкнулся, — это попытка использовать это событие, используя эхо Laravel и даже ванильный код Pusher.
У меня была эта проблема раньше, и мое решение состояло в том, чтобы не использовать частные каналы (поскольку они вообще не работали для меня). Но сейчас мне нужен функционал.
Прогресс
Перед публикацией этого вопроса я заново сделал новую установку Laravel и повторил ее снова, но результат был тот же. Я даже создал систему входа в систему, чтобы убедиться, что это не потому, что мои пользователи не были, потому что мои пользователи не вошли в приложение.
ListenForPusherEvents(){
Echo.private(`datalev`)
.listen('DefaultPusherEvent', (e) => {
console.log(e);
console.log('Something');
});
}
Также у меня НЕТ консольных ошибок, так как я уже аутентифицировал пользователя с помощью толкателей. 'broadcasting/auth'
каталог
Это код, который аутентифицирует пользователя для частного канала.
public function PusherAuthentication(Request $request)
{
$pusher = new Pusher(env('PUSHER_APP_KEY'), env('PUSHER_APP_SECRET'), env('PUSHER_APP_ID'), ['cluster' => 'eu']);
$pusher->socket_auth($request->input('channel_name'), $request->input('socket_id'));
}
Убедитесь, что ваш маршрут широковещания / авторизации правильно возвращает объект JSON с ключом аутентификации. Это используется Pusher для аутентификации вашей подписки на канал.
Процесс выглядит следующим образом:
ваш клиент хочет подписаться и спрашивает Laravel, все ли в порядке (вызов AJAX / broadcasting / auth)
ваш Laravel подтверждает, что все в порядке и информирует толкача; вы получаете уникальный ключ авторизации, который отправляется обратно вашему клиенту через AJAX
Ваш JavaScript может затем подписаться на канал Pusher, используя тот ключ авторизации, который он получил от вашего Laravel, и который известен как действительный ключ Pusher, поэтому Pusher примет его.
Других решений пока нет …