Laravel Echo无法订阅Pusher私人频道

时间:2016-12-27 22:39:32

标签: laravel laravel-5.3 pusher laravel-echo

我无法listen to an event in a private channel。但是,我可以听公共频道。

问题

这有效:

Echo.channel('Foo.Bar')
    .listen('MyEvent', (e) => {
        console.log('It worked!');
    });

我可以在Pusher Debug Console中看到有三个连续的事件:

  1. 连接
  2. SUBSCRIBED
  3. OCCUPIED
  4. 另外,如果我发送Channel: Foo.Bar; Event: App\Events\MyEvent,我可以在浏览器控制台中看到输出。

    但是,这不起作用:

    Echo.private('Foo.Bar')
        .listen('MyEvent', (e) => {
            console.log('It privately worked!');
        });
    

    我没有在Pusher Debug Console中看到订阅。显然,如果我发送Channel: private-Foo.Bar; Event: App\Events\MyEvent,我在浏览器控制台中看不到输出。

    我做了什么

    1. Broadcast::routes();
    2. boot()方法中添加了BroadcastServiceProvider
    3. 已添加Broadcast::channel('Foo.Bar', function ($user, $FooBarId) {return true;});boot()

    4. BroadcastServiceProvider方法中
    5. 拥有queue working with supervisor

    6. 使用app,key,secret,driver,cluster,encrypt正确设置config\broadcasting。 (我可以将我的应用程序中的事件发送给Pusher)
    7. 旁注

      我可以使用我的应用发送和收听公共事件。只有当频道变为私密时,我才能收听(我的应用可以将私人频道上的事件发送给Pusher)。

      我怀疑它可能与身份验证有关,因为Broadcast::channel('Foo.Bar', callback)中的BroadcastServiceProvider未被执行。

      我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

config\app中,您需要取消注释以下行

App\Providers\BroadcastServiceProvider::class

请参阅documentation