Laravel не поглощает события Pusher

Это было давней проблемой некоторое время, и прежде чем я начну, вот что я попробовал и где я искал решение.

Несколько вещей, которые я пробовал

Я убедился, что мой кластер был правильным для приложения, которое я использую:
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'));
}

1

Решение

Убедитесь, что ваш маршрут широковещания / авторизации правильно возвращает объект JSON с ключом аутентификации. Это используется Pusher для аутентификации вашей подписки на канал.

Процесс выглядит следующим образом:

  1. ваш клиент хочет подписаться и спрашивает Laravel, все ли в порядке (вызов AJAX / broadcasting / auth)

  2. ваш Laravel подтверждает, что все в порядке и информирует толкача; вы получаете уникальный ключ авторизации, который отправляется обратно вашему клиенту через AJAX

  3. Ваш JavaScript может затем подписаться на канал Pusher, используя тот ключ авторизации, который он получил от вашего Laravel, и который известен как действительный ключ Pusher, поэтому Pusher примет его.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]