【发布时间】:2018-02-23 19:45:51
【问题描述】:
我已经为我的应用设置了 Pusher 和 Laravel Echo,以便在某些事件触发时通知用户。
我已经通过在“公共频道”上广播来测试设置是否正常工作,并成功地看到了。
这是事件本身:
class ItemUpdated implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $item;
public function __construct(Item $item)
{
$this->item = $item;
}
public function broadcastOn()
{
return new Channel('items');
}
}
公共频道:
Broadcast::channel('items', function ($user, $item) {
return true;
});
app/resources/assets/js/bootstrap.js:
import Echo from 'laravel-echo';
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'my_key',
cluster: 'eu',
encrypted: true
});
还有 Laravel Echo 注册:(它位于我的主布局的“头部”部分,事件触发视图从该部分扩展。)
<head>
<meta charset="utf-8">
<meta name="csrf-token" content="{{ csrf_token() }}">
<script src="{{ asset('js/app.js') }}"></script>
<script>
window.Laravel = {'csrfToken': '{{csrf_token()}}'}
window.Echo.channel('items')
.listen('ItemUpdated', function(e) {
console.log("It is working:)");
});
</script>
</head>
现在,此设置适用于公共频道广播,但是当我尝试在私人频道上广播时,我得到了
//updated "ItemUpdated" event broadcastOn() method
public function broadcastOn()
{
return new PrivateChannel('items');
}
//updated laravel echo registering
<script>
window.Laravel = {'csrfToken': '{{csrf_token()}}'}
window.Echo.private('items')
.listen('ItemUpdated', function(e) {
console.log("It is working:)");
});
//console logged error
Pusher couldn't get the auth user from :myapp 500
我检查了来自开发者控制台的传出网络请求,发现推送器正在尝试“POST”到
http://localhost:8000/broadcast/auth
但它得到一个 500 错误代码。
认为这可能有助于找出问题。
我该怎么办?
【问题讨论】:
-
这是一个
500错误。检查您的日志。 -
是的,但是由于我的服务器在公共广播中正常工作,我不知道问题出在哪里
-
如上所述。检查您的日志。他们说什么?
-
Log infoPusher:无法从您的 webapp 获取身份验证信息:500
-
这是你服务器的错误日志,还是推送者的错误日志?