Пушер не отображает сообщение в Laravel 5.3

Я новичок в Pusher и Laravel Echo и изучаю их шаг за шагом. Я пытаюсь реализовать это в своем новом проекте, но почему-то не могу понять, как эта библиотека толкателей работает с Laravel Echo.

То, что я делаю, при регистрации администратора, я просто хочу проверить, правильно ли я сделал или нет. Я просто хочу увидеть результат сгенерированного мной события на консоли отладки в моей учетной записи на панели инструментов pusher.

Я создал событие AdministratorGenerated со следующим содержимым:

class AdministratorGenerated implements ShouldBroadcast
{
    use InteractsWithSockets, SerializesModels;

    public $user;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct(User $user)
    {
        $this->user = $user;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return Channel|array
     */
    public function broadcastOn()
    {
        //return new PrivateChannel('administrator');

        // To send it as public channel to pusher
        return['administrator'];
    }
}

В файле bootstrap.js у меня есть:

import Echo from "laravel-echo"

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'my-pusher-key',
    cluster: 'ap1',
    encrypted: true
});

window.Echo.channel('administrator')
    .listen('AdministratorGenerated', (e) => {
        console.log(e);
    });

При успешной регистрации формы я запускаю событие

event(new AdministratorGenerated($registeredUser));

Это событие запускает приветственное письмо и устанавливает учетные записи по умолчанию.

Но когда я перехожу к консоли отладки на панели инструментов Pusher, все, что я вижу, это следующее:

введите здесь описание изображения


ИЗМЕНИТЬ 1:

Вот файл .env:

APP_ENV=local
APP_KEY=base64:toktfSBbJM0vbylxhT/zHXOi7zVga9jsliB/mtE96HY=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=larammerce_v1
DB_DATABASE_TESTING=larammerce_v1_testing
DB_USERNAME=root
DB_PASSWORD=root

BROADCAST_DRIVER=pusher
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=database

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

# All of the below values are correct
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=username
MAIL_PASSWORD=password
MAIL_ENCRYPTION=null

# All of the below values are correct
PUSHER_APP_ID=id
PUSHER_KEY=key
PUSHER_SECRET=secret

А вот и файл конфигурации broadcasting.php

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Default Broadcaster
    |--------------------------------------------------------------------------
    |
    | This option controls the default broadcaster that will be used by the
    | framework when an event needs to be broadcast. You may set this to
    | any of the connections defined in the "connections" array below.
    |
    | Supported: "pusher", "redis", "log", "null"
    |
    */

    'default' => env('BROADCAST_DRIVER', 'pusher'),

    /*
    |--------------------------------------------------------------------------
    | Broadcast Connections
    |--------------------------------------------------------------------------
    |
    | Here you may define all of the broadcast connections that will be used
    | to broadcast events to other systems or over websockets. Samples of
    | each available type of connection are provided inside this array.
    |
    */

    'connections' => [

        'pusher' => [
            'driver' => 'pusher',
            'key' => env('PUSHER_KEY'),
            'secret' => env('PUSHER_SECRET'),
            'app_id' => env('PUSHER_APP_ID'),
            'options' => [
                'cluster' => 'ap1',
                'encrypted' => true
            ],
        ],

        'redis' => [
            'driver' => 'redis',
            'connection' => 'default',
        ],

        'log' => [
            'driver' => 'log',
        ],

        'null' => [
            'driver' => 'null',
        ],

    ],

];

В чем ошибка, которую я делаю? Может ли кто-нибудь помочь мне с этим?

Заранее спасибо.


person Saiyan Prince    schedule 03.09.2016    source источник


Ответы (1)


Ваше событие, похоже, еще не дошло до Pusher правильно. Вероятно, неправильная конфигурация с вашей конфигурацией вещания.

Сначала проверьте config/broadcasting.php и определите кластер для вашего соединения Pusher:

'options' => [
    'cluster' => 'your_cluster',
]

Установите значения по умолчанию: BROADCAST_DRIVER=pusher в файле .env.

Попробуйте запустить событие AdministratorGenerated еще раз и посмотрите, будет ли оно зарегистрировано в консоли отладки Pusher.

Вы также используете PrivateChannel, поэтому window.Echo.channel('administrator'), скорее всего, будет window.Echo.private('administrator'). Также снова запустите gulp.

person baikho    schedule 03.09.2016
comment
Это снова дало мне то же самое, что вы видите на изображении... Даже после внесения изменений, которые вы просили меня сделать.. - person Saiyan Prince; 05.09.2016
comment
Какой драйвер очереди вы используете и установили ли вы pusher/pusher-php-server с композитором? - person baikho; 05.09.2016
comment
Ок, отлично. Вы слушали свою очередь? php artisan queue:listen или php artisan queue:work. Или повторите попытку с QUEUE_DRIVER=sync и откройте консоль отладки pusher. Запустите событие еще раз. Вы также выполнили миграцию для своей таблицы вакансий? - person baikho; 06.09.2016
comment
Ну, проблема была в том, что я забыл добавить queue:work во вкладку cron моей машины... Я отредактировал то же самое, и он начал работать, как и ожидалось. Но теперь, я думаю, возникла новая проблема. В случае, если пользователю отправлено приветственное письмо, оно не срабатывает.. В чем может быть проблема? Не могли бы вы мне помочь ? - person Saiyan Prince; 06.09.2016
comment
Конечно, но вы должны решить эту проблему в отдельном вопросе, чтобы другие также могли вам помочь, и это также было бы больше по теме. - person baikho; 06.09.2016
comment
Вы случайно не работаете в среде Homestead? Если это так, я обнаружил, что мои журналы ошибок pusher показывают, что время в моей гостевой среде более чем на 600 с старше, чем время сервера. Пришлось запустить sudo ntpdate -s time.nist.gov для исправления. - person Gunnar; 26.10.2016