Событие laravel не отправляется в толкатель

У меня есть приложение pusher, затем я пытаюсь отправить сообщение pusher по событию laravel, это мое событие:

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class NewOrder
{
    use Dispatchable, InteractsWithSockets, SerializesModels;
    public $email;
    public $message;


    public function __construct($email)
    {
        $this->email = $email;
        $this->message = "New order from {$email}, please check.";
        //
    }

    public function broadcastOn()
    {
        return ['new-order'];
    }

}

и я пытаюсь проверить это с помощью теста маршрута,

Route::get('test', function () {
    event(new App\Events\NewOrder('John'));
    return "Event has been sent!";
});

моя конфигурация толкателя была настроена как конфигурация моей учетной записи толкателя, но после доступа к /test консоль отладки толкателя ничего не показывает.

Событие laravel не отправляется в толкатель это мой broadcasting.php

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


    'connections' => [

        'pusher' => [
            'driver' => 'pusher',
            'key' => env('PUSHER_APP_KEY'),
            'secret' => env('PUSHER_APP_SECRET'),
            'app_id' => env('PUSHER_APP_ID'),
            'options' => [
                'cluster' => env('PUSHER_APP_CLUSTER'),
                // 'cluster' => 'ap1',
                'encrypted' => true,
            ],
        ],

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

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

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

    ],

];

я не знаю, чтобы увидеть журнал pusher из приложения laravel, кто-нибудь может мне помочь? я использую laravel 5.5

Я сделал этот код, но каждый раз, когда я запускаю php artisan serve, он показывает Pusher class doesn't exist @Quezler

Mamen 29.05.2018 10:11

Тогда либо вы не установили pusher SDK, либо вам нужно запустить composer dump-autoload.

Joe 29.05.2018 10:15

Вы установили pusher, как указано на странице документации по трансляции laravel? composer require pusher/pusher-php-server "~3.0"

Quezler 29.05.2018 10:16

да, я установил это

Mamen 29.05.2018 10:22

Я следую руководству pusher web по этой ссылке: pusher.com/tutorials/web-notifications-laravel-pusher-channe‌ ls

Mamen 29.05.2018 10:22

что-нибудь в ./storage/logs/laravel.log?

Quezler 29.05.2018 10:50

ничего о толкателе

Mamen 29.05.2018 10:54

Вы использовали огонь события?

parthi 29.05.2018 11:26

что это значит? я использую метод event (), как указано в руководстве

Mamen 29.05.2018 12:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
6
10
4 181
7

Ответы 7

Я думаю, что проблема связана с объявлением класса события, вам следует реализовать ShouldBroadcastNow, поскольку он немедленно запускает событие и не требует реализации очереди. По умолчанию вам нужно настроить очередь, а затем запустить эту очередь для запуска событий.

use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
class NewOrder implements ShouldBroadcastNow
{
  ....do your stuff....
}

А также посмотрите потрясающий плейлист это, он наверняка решит все ваши проблемы

Замените это:

class NewOrder

С этим:

use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class NewOrder implements ShouldBroadcast

Это должно сработать. Дай мне знать, если я смогу еще помочь.

Вот как я устраняю ошибку

  1. Убедитесь, что служба вещания включена в config / app.php
  2. Добавьте на страницу метатег csrf_token
    Pusher.logToConsole = true;
            var key = '<?php echo env('PUSHER_APP_KEY') ?>';
            var pusher = new Pusher(key,{
                cluster: 'ap2',
                forceTLS: true
                });
            var channel = pusher.subscribe('channel-name');
            channel.bind('App\\Events\\EventName',function (data) {
                console.info("OK");
                console.info(data);
            });

Я полагаю, вы имели в виду config / app.php?

Арсен Гоян 15.01.2021 12:22
'useTLS' => true

вариант решил мою проблему.

'options' => [
     'cluster' => env('PUSHER_APP_CLUSTER'),
     'useTLS' => true,
]

Привет, у меня тоже была эта проблема, и исправьте ее, очистив кеш! Вот код!

php artisan config:cache
php artisan config:clear
php artisan route:cache
php artisan route:clear
php artisan optimize --force

Надеюсь, это может быть вам полезно!

У меня тоже была эта проблема около 2 часов.

Вы забыли реализовать трансляцию,

вы можете использовать:

use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
class NewOrder implements ShouldBroadcastNow

или же

use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class NewOrder implements ShouldBroadcast

Для последнего требуется драйвер очереди.

Удачного кодирования :)

Спасибо! Я бы хотел, чтобы документы laravel сделали это более понятным

Benjamin Dowson 25.10.2020 03:57

проверьте файл .env QUEUE_CONNECTION=sync или вы должны запустить php artisan queue:work

Это не дает ответа на вопрос. Как только у вас будет достаточно репутация, вы сможете комментировать любой пост; вместо этого дать ответы, не требующие пояснений от спрашивающего. - Из обзора

Ferran Buireu 29.12.2020 10:15

Другие вопросы по теме