Ошибка авторизации вебсокетов

Рейтинг: 0Ответов: 0Опубликовано: 25.05.2023

Итак, пытаюсь сделать вещание моделей по документации https://laravel.su/docs/8.x/broadcasting

Я прописал в свою модель

   use BroadcastsEvents;
    public function broadcastOn(string $event): array
    {
        return [$this, $event];
    }

Мой сервис в app.php раскомментирован
Я прописал это в прототип моего Vue

Vue.prototype.$echo = new Echo({
        broadcaster: 'pusher',
        key: process.env.MIX_PUSHER_APP_KEY,
        wsHost: process.env.MIX_PUSHER_HOST ?? window.location.hostname,
        wsPath: process.env.MIX_PUSHER_PATH ?? '',
        wsPort: process.env.MIX_PUSHER_PORT ?? 80,
        wssPort: process.env.MIX_PUSHER_PORT ?? 443,
        // forceTLS: (process.env.MIX_PUSHER_SCHEME ?? 'https') === 'https',
        forceTLS: false,
        disableStats: true,
        enabledTransports: ['ws', 'wss'],
        Pusher,
        cluster: 'eu',
        authorizer: (channel, options) => {
            return {
                authorize: (socketId, callback) => {
                    httpClient
                        .post('/broadcasting/auth', {
                            socket_id: socketId,
                            channel_name: channel.name,
                        })
                        .then(response => {
                            callback(false, response.data);
                        })
                        .catch(error => {
                            callback(true, error);
                        });
                },
            };
        },
    });

И пытаюсь слушать приватный канал

this.$echo.private(`App.Models.Task.${this.values.id}`).listen('.TaskUpdated', e => {
    console.log(e);
});

И по итогу получаю такую ошибку
введите сюда описание изображения введите сюда описание изображения
Мои настройки в .env

PUSHER_APP_ID=local
PUSHER_APP_KEY=local
PUSHER_APP_SECRET=local
PUSHER_SCHEME=http
PUSHER_HOST=127.0.0.1
PUSHER_PORT=6001
QUEUE_CONNECTION=sync

MIX_PUSHER_APP_ID="${PUSHER_APP_ID}"
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_SECRET="${PUSHER_APP_SECRET}"
MIX_PUSHER_SCHEME="${PUSHER_SCHEME}"
MIX_PUSHER_HOST="${PUSHER_HOST}"
MIX_PUSHER_PORT="${PUSHER_PORT}"

Также я не менял ничего в BroadcastServiceProvider, но пытался прописывать в ::routes auth:api & auth:sanctum, но получал ошибку 401 unauthorized. Помогите пожалуйста, я уже не знаю что делать

class BroadcastServiceProvider extends ServiceProvider
{
    public function boot(): void
    {
        Broadcast::routes();
        require base_path('routes/channels.php');
    }
}

UPD: В моём channels.php есть такие записи:

<?php

/*
|--------------------------------------------------------------------------
| Broadcast Channels
|--------------------------------------------------------------------------
|
| Here you may register all of the event broadcasting channels that your
| application supports. The given channel authorization callbacks are
| used to check if an authenticated user can listen to the channel.
|
*/

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

Broadcast::channel('App.Models.Task.{id}', static function ($user, $id) {
    return auth()->check();
});

UPD2: Ссылка на ответ от dd(auth()) https://codepen.io/Skayper/pen/VwERBeE

Ответы

Ответов пока нет.