Ошибка 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 ответ
Это может быть вызвано ошибкой в вашей конфигурации. Вот несколько вещей для проверки:
- В вашем
.env
файл, убедитесь, что идентификатор, ключ и секретный ключ установлены правильно. - Если вы обновились с Laravel 5.3 до Laravel 5.4, обратите внимание, что
.env
переменныеPUSHER_KEY
сейчасPUSHER_APP_KEY
а такжеPUSHER_SECRET
сейчасPUSHER_APP_SECRET
- В вашем
config/broadcasting.php
убедитесь, что кластер установлен правильно. Если вы не используете HTTPS, возможно, вам придется установить
encrypted
ключ кfalse
'options' => [ 'cluster' => 'ap1', // change this to your app's cluster 'encrypted' => false, ],