/pusher/auth 端点在 Laravel 中返​​回 404

Inv*_*tax 2 php laravel pusher

我构建了一个 Laravel 应用程序,尝试通过 Pusher.com 实现 Web Sockets(第一次)。

虽然我的公共频道订阅工作正常,但我很难让私人频道正常工作。

根据 laravel 文档,您需要取消我拥有的配置文件App\Providers\BroadcastServiceProvider::class中的注释。app.php

我的channels.php 有以下规则

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

Broadcast::channel('private-queue.business.{business}', function ($user, Business $business) {
    // @todo: add real authentication
    return true;
});
Run Code Online (Sandbox Code Playgroud)

我还需要添加其他内容才能使/pusher/auth端点正常工作吗?

Inv*_*tax 6

从 Laravel 7.x 开始,广播端点是broadcasting/auth而不是pusher/auth

我需要像这样更新我的 JS 才能定义自定义身份验证端点:

const pusher = new Pusher('{{ env('PUSHER_APP_KEY') }}', {
    cluster: '{{ env('PUSHER_APP_CLUSTER') }}',
    authEndpoint: '/broadcasting/auth',
    auth: {
        headers: {
            'X-CSRF-TOKEN': '{{ csrf_token() }}',
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

您需要添加 CSRF-TOKEN,否则您将收到页面过期错误。