Ошибка Laravel Echo 500 не получает событие толкателя

У меня была проблема при использовании канала присутствия в Laravel Echo с толкателем. когда я запускаю событие, я получаю 500 ошибок от BroadcastException без тела ответа, которое мне сложно отлаживать. когда я смотрю на консоль отладки толкателя, событие присутствия прослушивалось толкачом. поэтому я предполагаю, что мое событие никогда не было запущено в Pusher. Вот предварительный просмотр в моей вкладке сети

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

мой контроллер:

public function store() {
    $user = auth()->user();

    $message = $user->messages()->create([
        'message' => request('message')
    ]);

    event(new MessageReceived($message, $user));

    return ['status' => 'OK'];
}

MessageReceived учебный класс

namespace App\Events;


class MessageReceived implements ShouldBroadcast
{
   use Dispatchable, InteractsWithSockets, SerializesModels;

   public $message;

   public $user;

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

    $this->user = $user;
}

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

а вот мой вуэйс

mounted() {
    axios.get('/messages')
        .then(response => {
            this.messages = response.data
        })
        .catch(error => {
            console.log(error)
        })

    Echo.join('chatroom')
        .listen('MessageReceived', (e) => {
            console.log(e) //never get into this
        })
},

Я не могу найти, где ошибка. я использую кластер ap1 и объявлен в broadcasting.php и в моем bootstrap.js, кто-нибудь может мне помочь?

1 ответ

Решение

Это может быть вызвано ошибкой в ​​вашей конфигурации. Вот несколько вещей для проверки:

  1. В вашем .env файл, убедитесь, что идентификатор, ключ и секретный ключ установлены правильно.
  2. Если вы обновились с Laravel 5.3 до Laravel 5.4, обратите внимание, что .env переменные PUSHER_KEY сейчас PUSHER_APP_KEY а также PUSHER_SECRET сейчас PUSHER_APP_SECRET
  3. В вашем config/broadcasting.phpубедитесь, что кластер установлен правильно.
  4. Если вы не используете HTTPS, возможно, вам придется установитьencrypted ключ к false

    'options' => [
        'cluster' => 'ap1', // change this to your app's cluster
        'encrypted' => false,
    ],
    
Другие вопросы по тегам