Laravel Echo无法订阅Pusher私密频道
Laravel Echo cannot subscribe to Pusher private channel
我无法listen to an event in a private channel。但是,我可以收听 public 频道。
问题
这个有效:
Echo.channel('Foo.Bar')
.listen('MyEvent', (e) => {
console.log('It worked!');
});
我可以在 Pusher Debug Console 中看到三个连续的事件:
- 连接
- 已订阅
- 已占用
此外,如果我发送 Channel: Foo.Bar; Event: App\Events\MyEvent
,我可以在我的浏览器控制台中看到输出。
但是,这不起作用:
Echo.private('Foo.Bar')
.listen('MyEvent', (e) => {
console.log('It privately worked!');
});
我没有在 Pusher 调试控制台中看到订阅。显然,如果我发送 Channel: private-Foo.Bar; Event: App\Events\MyEvent
,我在浏览器控制台中看不到输出。
我做了什么
- 在
BroadcastServiceProvider
的 boot()
方法中添加了 Broadcast::routes();
已添加Broadcast::channel('Foo.Bar', function ($user, $FooBarId) {return true;});
在 BroadcastServiceProvider
的 boot()
方法中
- 使用应用程序、密钥、机密、驱动程序、集群、加密正确设置我的
config\broadcasting
。 (我可以将事件从我的应用程序发送到 Pusher)
旁注
我可以使用我的应用发送和收听 public 事件。只有当频道变为私有时,我才无法 listen(我的应用程序可以将私有频道上的事件发送到 Pusher)。
我怀疑它可能与身份验证有关,因为 BroadcastServiceProvider
中的 Broadcast::channel('Foo.Bar', callback)
没有被执行。
我在这里错过了什么?
在config\app
中,您需要取消注释以下行
App\Providers\BroadcastServiceProvider::class
我无法listen to an event in a private channel。但是,我可以收听 public 频道。
问题
这个有效:
Echo.channel('Foo.Bar')
.listen('MyEvent', (e) => {
console.log('It worked!');
});
我可以在 Pusher Debug Console 中看到三个连续的事件:
- 连接
- 已订阅
- 已占用
此外,如果我发送 Channel: Foo.Bar; Event: App\Events\MyEvent
,我可以在我的浏览器控制台中看到输出。
但是,这不起作用:
Echo.private('Foo.Bar')
.listen('MyEvent', (e) => {
console.log('It privately worked!');
});
我没有在 Pusher 调试控制台中看到订阅。显然,如果我发送 Channel: private-Foo.Bar; Event: App\Events\MyEvent
,我在浏览器控制台中看不到输出。
我做了什么
- 在
BroadcastServiceProvider
的 已添加
Broadcast::channel('Foo.Bar', function ($user, $FooBarId) {return true;});
在BroadcastServiceProvider
的 - 使用应用程序、密钥、机密、驱动程序、集群、加密正确设置我的
config\broadcasting
。 (我可以将事件从我的应用程序发送到 Pusher)
boot()
方法中添加了 Broadcast::routes();
boot()
方法中
旁注
我可以使用我的应用发送和收听 public 事件。只有当频道变为私有时,我才无法 listen(我的应用程序可以将私有频道上的事件发送到 Pusher)。
我怀疑它可能与身份验证有关,因为 BroadcastServiceProvider
中的 Broadcast::channel('Foo.Bar', callback)
没有被执行。
我在这里错过了什么?
在config\app
中,您需要取消注释以下行
App\Providers\BroadcastServiceProvider::class