Laravel Echo有多个频道

时间:2018-01-23 02:10:04

标签: laravel broadcast laravel-echo laravel-broadcast

你好吗?

我有一个问题,我没有找到满意的答案。

我有一个足球队的应用程序,用户可以加入多个团队,所以我想在团队中的某个动作发生时发送通知,例如,当计划匹配时,我想通知用户。

我有这样的频道。

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

但我不知道如何在登录时在多个频道注册用户。

问题是,我需要注册用户所属的每个团队的频道吗?

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

还是存在任何其他方式我可以将用户注册到他的频道?

非常感谢你的帮助,对我来说非常有用。

1 个答案:

答案 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)