我将我的应用程序从5.2更新到5.3以使用Pusher广播通知,但是当推送器尝试通过broadcasting/auth
验证当前登录用户时,我收到错误:
Pusher : No callbacks on private-App.Models.Client.9 for pusher:subscription_error
在浏览器控制台 - > network-> xhr中,我发现broadcasting/auth
的请求没有给我auth:{token}
对象,而是返回我的登录页面!!!
我认为这是中间件的问题,但我无法找到它。
BroadcastServiceProvider.php:
public function boot()
{
// Broadcast::routes();
Broadcast::routes(['middleware' => ['auth:client']]);
/*
* Authenticate the user's personal channel...
*/
Broadcast::channel('App.Models.Client.*', function ($user, $userId) {
return true;
});
}
导入pusher-js&之后app.js: Laravel Echo
$(document).ready(function() {
// check if there's a logged in user
if(Laravel.clientId) {
window.Echo.private(`App.Models.Client.${Laravel.clientId}`)
.notification((notification) => {
console.log(notification);
addNotifications([notification], '#notifications');
});
} });
任何帮助都会非常感激!
答案 0 :(得分:1)
使用Laravel版本> 5.3& Pusher,您需要在标头请求中添加令牌,您的代码在 resources / assets / js / bootstrap.js
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'your key',
cluster: 'your cluster',
encrypted: true,
auth: {
headers: {
Authorization: 'Bearer ' + YourTokenLogin
},
},
});
它对我有用,希望对你有帮助。
答案 1 :(得分:0)
经过长时间的梳理,我终于找到了造成此问题的原因。我使用的是用于身份验证/授权的软件包,名为cartalyst/sentinel
,非常好,除了安装后它将完全替代Laravel默认身份验证行为。因此,对broadcasting/auth
的任何请求实际上都会被拒绝。