Данные по частным каналам не принимаются клиентами - PullRequest
0 голосов
/ 02 октября 2018

Я не могу заставить работать частные каналы с использованием вещания 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 не кажется, что клиент подписался на "testevent.1 "канал.Если я перехожу на общедоступный канал, подписка регистрируется.

1 Ответ

0 голосов
/ 02 октября 2018

В параграфе " Определение авторизационных обратных вызовов " документации Laravel Broadcast вы можете видеть, что приватные каналы должны аутентифицировать пользователей, прежде чем они смогут их слушать.

Итакв вашем routes/channels.php вам нужно написать логику аутентификации, например:

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