Ошибка авторизации вебсокетов
Итак, пытаюсь сделать вещание моделей по документации 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
Источник: Stack Overflow на русском