У меня есть приложение 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 консоль отладки толкателя ничего не показывает.
'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
Тогда либо вы не установили pusher SDK, либо вам нужно запустить composer dump-autoload.
Вы установили pusher, как указано на странице документации по трансляции laravel? composer require pusher/pusher-php-server "~3.0"
да, я установил это
Я следую руководству pusher web по этой ссылке: pusher.com/tutorials/web-notifications-laravel-pusher-channe ls
что-нибудь в ./storage/logs/laravel.log?
ничего о толкателе
Вы использовали огонь события?
что это значит? я использую метод event (), как указано в руководстве






Я думаю, что проблема связана с объявлением класса события, вам следует реализовать ShouldBroadcastNow, поскольку он немедленно запускает событие и не требует реализации очереди. По умолчанию вам нужно настроить очередь, а затем запустить эту очередь для запуска событий.
use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
class NewOrder implements ShouldBroadcastNow
{
....do your stuff....
}
А также посмотрите потрясающий плейлист это, он наверняка решит все ваши проблемы
Замените это:
class NewOrder
С этим:
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class NewOrder implements ShouldBroadcast
Это должно сработать. Дай мне знать, если я смогу еще помочь.
Вот как я устраняю ошибку
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?
'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 сделали это более понятным
проверьте файл .env QUEUE_CONNECTION=sync или вы должны запустить php artisan queue:work
Это не дает ответа на вопрос. Как только у вас будет достаточно репутация, вы сможете комментировать любой пост; вместо этого дать ответы, не требующие пояснений от спрашивающего. - Из обзора