Я пытаюсь настроить толкатель в моем SPA. Я разработал приложение на Laravel 5.7 и Vus js и использую jwt для аутентификации.
Мой Boostrap.js выглядит так:
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
encrypted: true,
auth: {
headers: {
Authorization: JWTtoken
}
}
});
JWTtoken
токен, полученный от JWT после входа в систему.
Мой BroadcastServiceProvider выглядит следующим образом:
Я раскомментировал это в config / app.php
class BroadcastServiceProvider extends ServiceProvider
{
public function boot()
{
Broadcast::routes(['middleware' => 'jwt.auth']);
require base_path('routes/channels.php');
}
}
Мой файл Channels.php выглядит так:
Broadcast::channel('App.User.{id}', function ($user, $id) {
return (int) $user->id === (int) $id;
});
Я также убедился, что все приложение работает с jwt в качестве единственного метода аутентификации в
конфиг / auth.php
Мое событие под названием UserEvent Выглядит так:
class UserEvent implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $user;
public function __construct(User $user)
{
$this->user = $user;
}
public function broadcastAs()
{
return 'themechanged';
}
public function broadcastOn()
{
return new PrivateChannel('App.User.'.$this->user->id);
}
}
Тогда в моем компоненте vue я сделал это:
Echo.private('App.User.1')
.notification('themechanged', (data) => {
console.log(data)
})
но я получаю эту ошибку в моей консоли:
broadcasting/auth 401 (Unauthorized)