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)