我该如何解决此推送错误 - 从身份验证端点返回的 JSON 无效,但状态代码为 200?

Ade*_*owe 1 laravel-echo pusher-js vuejs3

在这里问同样的问题后我仍然遇到这个问题:从身份验证端点返回的 JSON 无效,但状态代码为 200,没有响应。我查看了类似的问题并遵循了建议:将广播驱动程序设置为“pusher”,在 app.config 文件中取消注释“App/BroadcastServiceProvider”类,在 .env 文件中将调试模式设置为 false 等。我有还查看了 Pusher 文档,但问题对我来说仍未解决。

我已经通过添加“/broadcasting/auth/”身份验证端点和标头更新了之前的尝试,但仍然出现相同的错误。但我现在可以看到 302 重定向到身份验证路由,然后 302 重定向到登录路由,然后到仪表板,在 Laravel Telescope 上有 200 响应,这是我以前没有看到的。因此,这对我来说添加身份验证端点应该可以解决问题,但事实并非如此。

我还尝试设置和使用“/ Pusher / auth /”身份验证端点路由和控制器,但它给了我“无法加载资源:服务器响应状态为405(不允许方法)”以及“错误” :无法从 auth 端点检索 auth 字符串 - 从 /pusher/auth 收到状态:405,但不是之前的无效 json 错误。我通过向控制器发送“get”请求得到此信息,但收到带有“的 500 内部服务器错误” post'请求。我真的不知道哪个是正确的。

这是我的 bootstrap.js 文件:

import Echo from 'laravel-echo';

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

// Enable pusher logging - don't include this in production
Pusher.logToConsole = true;

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: process.env.MIX_PUSHER_APP_KEY,
    cluster: process.env.MIX_PUSHER_APP_CLUSTER,
    forceTLS: true,
    authEndpoint: '/broadcasting/auth',
    //authEndpoint: '/pusher/auth',
    auth: {
        headers: {
            'X-CSRF-TOKEN': '{{ csrf_token() }}',
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

这是我创建的一个 PusherController:

public function pusherAuth(Request $request)
    {

        $key = getenv('PUSHER_APP_KEY');
        $secret = getenv('PUSHER_APP_SECRET');
        $app_id = getenv('PUSHER_APP_ID');

        $pusher = new Pusher($key, $secret, $app_id);
        $auth = $pusher->socket_auth($_GET('channel_name'), $_GET('socket_id'));
        
        return response($auth, 200);
}
Run Code Online (Sandbox Code Playgroud)

我现在知道我的 vue 前端文件应该接收并显示广播检查,并且该问题与解决此推送器订阅错误有关。

任何帮助将不胜感激。

Ale*_*lex 7

检查您的.env广播驱动程序是否正确:

BROADCAST_DRIVER=pusher
Run Code Online (Sandbox Code Playgroud)