我正在使用Laravel Echo和pusher作为我的服务器。它已经在公共频道上工作了。
这是我的Laravel回声监听器image link
的照片现在,我的问题是当我使用PrivateChannel并在私人频道中收听时,此错误弹出:
POST http://localhost:3000/broadcasting/auth 500(内部服务器错误)
在“控制台/网络”标签中的错误中,显示未定义路由[登录]。
这是控制台/网络https://i.stack.imgur.com/fnAGp.png
中的图像我所做的事情:
-config / app.php中未注释的App \ Providers \ BroadcastServiceProvider :: class
-添加了Broadcast :: routes(['middleware'=> ['auth:api']]);在BroadcastServiceProvider.php
-使用Echo.private('channel-name')代替Echo.channel('channel-name')收听私人频道
-将authEndpoint:'http://localhost:3000/broadcasting/auth'添加到bootstrap.js(这是我的Echo选项所在的位置)
-在我的channels.php(here is a photo)中添加了一个频道(可能是私人频道)
-在我的主刀片服务器中添加了csrf令牌元标记
在推送服务器中,它在触发时会接收事件,这是一个 picture of the event successfully fired.
问题是当我收听私人频道时会弹出错误,但是在收听公共频道时一切正常,而且我不确定如何评估此问题。
答案 0 :(得分:2)
您必须将auth标头与如下的pusher请求一起传递。
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 not using Auth Headers