Laravel Echo не подписывается на частный канал - PullRequest
0 голосов
/ 02 августа 2020
  • Echo Версия: 1.8.0
  • Laravel Версия: 7.0
  • PHP Версия: 7.2.
  • NPM Версия: 6.12. 1
  • Версия узла: 12.13.1

Описание: я пытаюсь отправлять уведомления пользователям,

У меня хорошее соединение с пушером, потому что оно отправляется на publi c каналов А также, я получаю это сообщение на моей консоли [2020-07-24 21:08:09][355] Processed: Illuminate\Notifications\Events\BroadcastNotificationCreated и на пушере я также вижу, что сообщение было отправлено. Я также не получаю никаких ошибок в консоли моего браузера, так как все соединения с веб-сокетами работают нормально. Но я все еще не получаю никаких сообщений. Я пробовал

Echo.private('App.User.' +userId)
   .notification((notification) => {
   console.log(notification);
  });

Я также пробовал

Echo.private('App.User.' + userId)
  .listen('.Illuminate\\Notifications\\Events\\BroadcastNotificationCreated', (e) => {
  console.log('Event Notification received ', e)
  });

Теперь я включил ведение журнала ошибок Pusher и получил app.js:42600 Pusher : : ["JSON returned from auth endpoint was invalid, yet status code was 200. Data was: <!DOCTYPE html>\r\n<html lang=\"en\">\r\n

Я также следил за многими учебными пособиями и документами Все безрезультатно.

Шаги для воспроизведения:

Создайте уведомление и объявите как метод toArray, так и методы toBroadcast, но echo не может поймать сообщения от толкателя

1 Ответ

0 голосов
/ 08 августа 2020

Я, наконец, решил эту проблему сам

Шаги

В моем bootstrap. js файле

window.Echo = new Echo({
      broadcaster: "pusher",
      key: "my key",
      cluster: "eu",
      encrypted: true,
      authEndpoint: "api/broadcasting/auth",
      auth: {
        headers: {
          Authorization: "Bearer " + localStorage.getItem("token"),
        },
      },
    });

Затем в моем routes / api. php file,

Route::middleware('auth:api')->post('broadcasting/auth', function (Request $request) {
    $pusher = new Pusher\Pusher(
    $app_key,
    $app_secret,
    $app_id
);
return $pusher->socket_auth($request->request->get('private-my-channel'),($request->request->get('socket_id'));
});

Более подробная информация об этом содержится в документации , надеюсь, это когда-нибудь поможет кому-то

...