событие laravel не отправлено пушеру - PullRequest
0 голосов
/ 29 мая 2018

У меня есть приложение-пушер, затем я пытаюсь отправить сообщение пушеру по событию 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 консоль отладчика толкателя ничего не показывает.

enter image description here это моя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',
        ],

    ],

];

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

Ответы [ 3 ]

0 голосов
/ 17 ноября 2018

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

class NewOrder

На это:

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

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

0 голосов
/ 18 апреля 2019

Вот как я могу устранить ошибку

  1. Убедитесь, что служба вещания включена в config / app.js
  2. Добавьте метатег csrf_token на странице

    Pusher.logToConsole = true;var key = '';var pusher = new Pusher (ключ, {cluster: 'ap2', forceTLS: true});var channel = pusher.subscribe ('название канала');channel.bind ('App \ Events \ EventName', функция (данные) {console.log ("OK"); console.log (данные);});

0 голосов
/ 28 июля 2018

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

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

А также отметьте этот удивительный плейлист , который решит все ваши проблемы за su

...