Ошибка Laravel Echo 500 (трансляция / авторизация)?

хорошего дня !

У меня проблема: я установил Laravel Echo & Pusher, но получил эту ошибку, не знаю, как ее исправить :(

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

Я проверил свой ключ приложения, кластер приложений, но все в порядке.

Кто-нибудь может мне помочь?

app.js

const app = new Vue({
    el: '#app',
    data: {
        messages: []
    },
    methods:{
        addMessage(message){
            this.messages.push(message);
            axios.post('/messages', message).then(response => {
               console.log(response);
            });
        }
    },
    created(){
        axios.get('/messages').then(response => {
            this.messages = response.data;
        });

        Echo.channel('chatroom')
            .listen('MessageEvent', (e) => {
                console.log(e);
            });
    }
})

bootstrap.js

import Echo from 'laravel-echo'

window.Pusher = require('pusher-js');

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: '************',
    cluster: 'ap1',
    encrypted: false
});

MessageEvent

use Dispatchable, InteractsWithSockets, SerializesModels;
public $message, $user;

public function __construct(Message $message, User $user)
{
    $this->message = $message;
    //query
    $this->user = $user;
}

public function broadcastOn()
{
    return new PresenceChannel('chatroom');
}

channels.php

Broadcast::channel('App.User.{id}', function ($user, $id) {
    return (int) $user->id === (int) $id;
});

Broadcast::channel('chatroom', function ($user, $id) {
    return $user;
});

person Manh Nguyen    schedule 05.02.2018    source источник
comment
В вашем laravel.log файле что-нибудь есть?   -  person    schedule 05.02.2018


Ответы (4)


Ошибка 403 или 500 / broadcasting / auth с версией Laravel> 5.3 и Pusher, вам нужно изменить свой код в resources / assets / js / bootstrap.js с помощью

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'your key',
    cluster: 'your cluster',
    encrypted: true,
    auth: {
        headers: {
            Authorization: 'Bearer ' + YourTokenLogin
        },
    },
});

И в app / Providers / BroadcastServiceProvider.php измените на

Broadcast::routes()

с участием

Broadcast::routes(['middleware' => ['auth:api']]);

or

Broadcast::routes(['middleware' => ['jwt.auth']]); //if you use JWT

это сработало для меня, и надеюсь, что это поможет вам.

person Alex    schedule 18.05.2018

Удалите $ id, поскольку вы не переходите из события

Broadcast::channel('chatroom', function ($user) {
  return true;
});
person Sambit Mohapatra    schedule 10.07.2019

Я думаю, вам нужно указать подлинную точку, если вы использовали laravel echo, просто перейдите к Resources / assets / js / bootstrap.js

Просто добавьте следующую строку внутри окна

Echo = new Echo({
authEndpoint : 'http://localhost/projectName/public/broadcasting/auth',
});
person jay.codefarm    schedule 26.03.2018

если вы работаете на localhost, убедитесь, что ваш файл .env настроен правильно

попробуйте установить

APP_URL=http://localhost
DB_HOST=localhost

и беги

php artisan config:cache

Надеюсь, что это поможет вам.

person Franz    schedule 27.08.2019