2

我使用 Laravel Echo 和 pusher 作为我的服务器。它已经在公共渠道上工作。

这是我的 laravel 回声监听器图片链接的照片

现在我的问题是当我使用 PrivateChannel 时,当我在私人频道中收听时,会弹出此错误:

POST http://localhost:3000/broadcasting/auth 500(内部服务器错误)

在控制台/网络选项卡中的错误内显示未定义路由 [登录]。

这是控制台/网络中的图像https://i.stack.imgur.com/fnAGp.png

我做过的事情:

- config/app.php 中未注释的 App\Providers\BroadcastServiceProvider::class

-添加广播::路由(['middleware' => ['auth:api']]); 在 BroadcastServiceProvider.php

- 使用 Echo.private('channel-name') 而不是 Echo.channel('channel-name') 来收听私人频道

- 添加 authEndpoint : ' http://localhost:3000/broadcasting/auth ' 到 bootstrap.js(这是我的 Echo 选项所在的位置)

- 在我的 channels.php 中添加了一个频道(可能是私人频道)(这是一张照片

-在我的主刀片中添加了 csrf 令牌元标记

在推送服务器中,当它被触发时它会接收到事件,这是 成功触发事件的图片。

所以问题是当我收听私人频道时会弹出错误但收听公共频道时一切正常,而且我不太确定如何评估这个问题。

4

1 回答 1

3

您必须使用推送器请求传递 auth 标头,如下所示。

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'APP_KEY',
    authEndpoint: '/broadcasting/auth'
    auth: {
        headers: {
            'Authorization': 'Bearer your_api_Toke',
            'X-CSRF-Token': "CSRF_TOKEN"
         }
      }
    });

更多细节:

https://github.com/laravel/echo/issues/26
Laravel Echo 不使用 Auth Headers

于 2019-11-11T05:57:08.370 回答