2016-12-15 2 views
1

Я установил Laravel, чтобы использовать толкатель для отправки событий для Laravel Echo, но события, которые я запускаю из кустарной консоли, не достигают толкателя. События, которые я запускаю из консоли отладки толкателя, работают нормально, поэтому внешняя часть в порядке. Может ли бродячая ВМ вмешиваться в это?Laravel broadcast не отправляет события толкателю

Мой .env файл

QUEUE_DRIVER=sync 
... 
PUSHER_KEY=<key> 
PUSHER_SECRET=<secret> 
PUSHER_APP_ID=<app_id> 

Мой broadcasting.php

'default' => env('BROADCAST_DRIVER', 'pusher'), 
... 
'connections' => [ 

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

Событие:

class NewMessage implements ShouldBroadcast 
{ 
    public function broadcastOn() 
    { 
     return [new Channel('chat.'.$this->conversation->id)]; 
    } 
} 

Событие вызывается из класса наблюдателя, который наблюдает модели created мероприятие.

public function created(Chat\Message $message) 
{ 
    event(new NewMessage($message)); 
} 

Наблюдатель регистрируется в AppServiceProvider

class AppServiceProvider extends ServiceProvider 
{ 
    public function boot() 
    { 
     Message::observe(MessageObserver::class); 
    } 
} 

Когда я запускаю консольную команду, которая создает новое сообщение терминал показывает это:

php artisan chat:broadcast asdasd 
[2016-12-15 16:26:44] local.INFO: Broadcasting [eventname] on channels [channel] with payload: {...} 

Примечание: большинство имен являются конфиденциальными, поэтому я использовал заполнители, такие как eventname, channel и т. д., но я надеюсь, что соответствующая информация есть.

Спасибо!

+1

У меня такая же проблема в Laravel 5.1. Смешно, что он * работал, а затем таинственно останавливался. Пока не понял, почему. Я могу сказать вам, что это не бродячая ВМ, которая мешает ... мы работали над ВМ. – geoidesic

ответ

1

Убедитесь, что BROADCAST_DRIVER в .env файла устанавливается толкатель как этот

BROADCAST_DRIVER=pusher 

и в broadcasting.php изменить массив зелий, как следующий код

'pusher' => [ 
    'driver' => 'pusher', 
    'key'  => env('PUSHER_KEY'), 
    'secret' => env('PUSHER_SECRET'), 
    'app_id' => env('PUSHER_APP_ID'), 
    'options' => [ 
     //leave these empty in your code 
    ], 
],` 

Сохранить эти изменения и запустить свой сервер Laravel I надеюсь, что это сработает для вас ... !!

+0

Кажется, вы можете мне помочь. Посмотрите на это: https://stackoverflow.com/questions/45877837/how-can-i-make-realtime-notification-for-user-who-are-not-login –