我有一个问题,我没有找到满意的答案。
我有一个足球队的应用程序,用户可以加入多个团队,所以我想在团队中的某个动作发生时发送通知,例如,当计划匹配时,我想通知用户。
我有这样的频道。
new PrivateChannel('team.'.$this->team->id);
但我不知道如何在登录时在多个频道注册用户。
问题是,我需要注册用户所属的每个团队的频道吗?
for($user->teams as $team){ Echo.private('team.'.$team->id) }
还是存在任何其他方式我可以将用户注册到他的频道?
非常感谢你的帮助,对我来说非常有用。
答案 0 :(得分: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)