【发布时间】:2018-01-03 20:03:07
【问题描述】:
我在 Laravel 5.3 中设置并初始化了我的按键。当我在本地环境中测试它时,它可以工作。当我尝试在我们的生产环境中运行完全相同的代码时,我收到了这个错误:
Pusher : Error : {"type":"WebSocketError","error":{"type":"PusherError","data":{"code":null,"message":"Auth info required to subscribe to private-App.User.16"}}}
我已经确认我的本地和生产中的 Pusher 键是相同的。
WS 在两个环境中初始化相同:
wss://ws.pusherapp.com/app/264P9d412196d622od64d?protocol=7&client=js&version=4.1.0&flash=false
我能看到的唯一区别是,当我们的生产服务器联系 Laravel“广播/认证”路由时,它只是在响应正文中收到 true。
当我的本地联系人“广播/身份验证”时,它会在响应中得到以下信息:
{auth: "22459d41299d6228d64d:df5d393fe37df0k3832fa5556098307f145d7e483c07974d8e7b2609200483f8"}
在我的BroadcastServiceProvider.php:
public function boot()
{
Broadcast::routes();
// Authenticate the user's personal channel.
Broadcast::channel('App.User.*', function (User $user, $user_id) {
return (int)$user->id === (int)$user_id;
});
}
什么可能导致 broadcast/auth 路由仅返回 true 而不是预期的身份验证?
【问题讨论】:
-
不应该在
route/channels.php上吗? Link -
@AntoniosTsimourtos 适用于 Laravel 5.3 之后的版本。
-
这是基本的,但我想值得一问:您是否使用
composer.lock来确保您在两个环境中具有相同的 deps? -
我会尝试找出处理
broadcasting/auth请求的方法,然后调试它。
标签: php laravel laravel-5.3 pusher