客户未收到私人渠道数据

时间:2018-10-02 07:41:24

标签: laravel laravel-5 pusher

我无法使用Pusher和Laravel广播获得私人频道的支持。在routes/channels.php文件中,似乎没有任何函数被触发:

Broadcast::channel('App.User.{id}', function ($user, $id) {
    return (int) $user->id === (int) $id;
});


Broadcast::channel('testevent.{id}', function ($user, $id)
{
    //This never fires
    dd("ENTERED HERE");
    return TRUE;
});

BroadcastServiceProvider.php中,我有:

public function boot()
{
    Broadcast::routes(['middleware' => 'auth:api']);

    require base_path('routes/channels.php');
}

Javascript file在客户端(使用Echo)处理数据:

Echo.private('testevent.1').listen('TestEvent', function(e)
{
    console.log(e);
});

使用公共频道非常完美。但是,一旦我尝试创建专用通道,数据就不会发送到侦听数据的客户端。可能是什么问题?

感谢您的帮助和指导!

编辑:

在Pusher Web控制台中,似乎没有客户端已预订“ testevent.1”通道。如果我将其更改为公共频道,则订阅将被注册。

1 个答案:

答案 0 :(得分:0)

在Laravel Broadcast文档的“ Defining authorization callbacks”段中,您可以看到,私人频道需要先对用户进行身份验证,然后才能收听。

因此,在您的routes/channels.php中,您需要在其中编写身份验证逻辑,例如:

Broadcast::channel('testevent.{id}', function ($user, $id)
{
    return $user->id === $user::findOrFail($id);
});