1

我创建了一个包含所有设置的通知系统,当我向推送者发送通知时它工作正常。但是当我尝试在私人频道上收听时,我得到了错误。

这是我的 bootstrap.js 文件 laravel-echo 代码

    import Echo from 'laravel-echo';

    window.Pusher = require('pusher-js');
    let token = document.head.querySelector('meta[name="csrf-token"]').content;
    window.Echo = new Echo({
        broadcaster: 'pusher',
        key: process.env.MIX_PUSHER_APP_KEY,
        cluster: process.env.MIX_PUSHER_APP_CLUSTER,
        forceTLS: true,
            auth: {
            headers: {
              'X-CSRF-Token': token
            }
          }
      
    });

这是我的主要 html 的元标记内容

 <meta name="csrf-token" content="{{ csrf_token() }}">
 <meta name="user-id" content="{{Auth::check() ? Auth::user()->api_token:''}}">

这是在 app.js 中监听的代码

let userId = document.head.querySelector('meta[name="user-id"]').content;
Echo.private('App.User.' + userId)
    .notification((notification) => {
        console.log(notification.type);
    });

这是我在控制台上遇到的错误

POST http://localhost:3000/broadcasting/auth 419(未知状态)

提前致谢

4

2 回答 2

0

Laravel 使用错误代码 419 来指示您的 CSRF 令牌无效或丢失。您应该确保将正确的令牌传递给您的身份验证端点。

于 2020-08-17T13:28:52.730 回答
0

我想到了。由于 BroadcastServiceProvider.php 中的路由设置,这是一个问题

于 2020-09-25T10:30:35.450 回答