Laravel Echo в нескольких каналах

Как твои дела?

У меня есть вопрос, и я не нашел ответа, который меня удовлетворил.

У меня есть приложение футбольных команд, и пользователь может присоединиться к нескольким командам, поэтому я хочу отправлять уведомления, когда в команде происходит какое-либо действие, например, когда запланирован матч, я хочу уведомить пользователя.

У меня есть такие каналы.

new PrivateChannel('team.'.$this->team->id);

Но я не знаю, как зарегистрировать пользователя в нескольких каналах, когда он вошел в систему.

Вопрос в том, нужно ли регистрироваться на канал каждой команды, к которой принадлежит пользователь?

for($user->teams as $team){ Echo.private('team.'.$team->id) }

Или существует какой-то другой способ, которым я могу зарегистрировать пользователя на его каналах?

Большое спасибо за вашу помощь, очень полезно для меня.

1 ответ

Вам нужно будет аутентифицировать пользователя для канала каждой команды в вашем channels.php файл маршрута:

// loop teams to create channel names like teams.team1.1, teams.team2.1
// {id} is the user's primary key
Broadcast::channel("teams.{$team->name}.{id}", function (Authenticatable $user, $id) {
    return (int)$user->getAuthIdentifier() === (int)$id;
});

// have Echo listen for broadcast events on the same channels. 
Echo.private('teams.team1.1')
    .listen('SomeTeamEvent', callback)
    .listen('AnotherTeamEvent', callback2)
    ...
    .listen('LastTeamEvent', callbackX)
...
Echo.private('teams.team2.1')
    .listen('SomeTeamEvent', anotherCallback)
    .listen('AnotherTeamEvent', anotherCallback2)
    ...
    .listen('LastTeamEvent', anotherCallback2)
Другие вопросы по тегам