Laravel 广播专用频道 - 广播/身份验证错误 500

时间:2021-01-21 00:42:04

标签: laravel vue.js pusher

当我尝试侦听事件时遇到 500 错误。 我使用 laravel 作为后端,使用 vuejs 作为前端,我是 vuejs 的新手,后端和前端在不同的项目中。 我有多个警卫,例如,但管理员管理员用户警卫是我关注的重点。 我想从我的 vueJs 中监听广播事件。 这是后端的配置方式。

这就是我从控制器调用事件的方式

    $message = new Message();
    $message->textContent = $request->message;
    $message->isSent = true;
    $message->conversation_id = $conversation->id;
    $message->save();
    broadcast(new MessageSent($message));

这就是我定义广播方法的方式

public function broadcastOn()
{
    return new PrivateChannel('conversation.10');
}

这是事件应该广播的频道

Broadcast::channel('conversation.{message_id}', function ($user,$id) {
    return true;
});

我将 BroadcastServiceProvider 编辑为

    public function boot()
    {
        Broadcast::routes(['middleware' => ['auth:admin']]);
        require base_path('routes/channels.php');
    }

我相信用户必须获得授权才能在私人频道上收听这就是为什么我使用 return true 以避免身份验证问题。

这是我在前端初始化的方式

window.Echo = new Echo({
  broadcaster: 'pusher',
  key: 'keyGoesHere',
  cluster: 'eu',
  encrypted: true,
  authEndpoint: 'http://www.backend.test/broadcasting/auth',
  auth: {
    headers: {
      authorization: 'Bearer ' + token
    }
  }
}) 

然后我以这种方式监听来自组件的事件

  mounted () {
    this.$store.dispatch('chat/setChatSearchQuery', '');
    Echo.channel(`private-conversation.10`)
      .listen('MessageSent', (e) => {
        console.log("event");
      });
  }

控制台显示

POST http://www.backend.test/broadcasting/auth 500 (Internal Server Error)

1 个答案:

答案 0 :(得分:-1)

我进行了加密:网络选项卡错误显示为假

strict-origin-when-cross-origin