为什么使用拉拉维尔的广播"toOthers"而不是更新广播中的每个人(包括自己)?



Laravel的broadcast toOthers方法用于将当前用户从广播的接收者中排除。 官方文档包括一个示例,通过带有端点的 Javascript 将任务添加到列表中,然后广播添加内容以更新其他用户。

axios.post('/task', task)
.then((response) => {
this.tasks.push(response.data);
});
...
Echo.channel('orders')
.listen('TaskCreated', (e) => {
this.tasks.push(e.task);
});

如果创建任务的用户收到广播,则会将重复的任务添加到其列表中。 因此,在任务控制器中使用了toOthers方法:

broadcast(new TaskCreated($task))->toOthers();

我在各种 Laravel Echo 教程/视频/文章中看到了类似的任务列表示例,它们都使用这种模式 - 但我不明白为什么。

鉴于此示例,我们不简单地与其他人一起仅从广播中更新当前用户的任务列表的原因是什么?

为什么我们要从 axios 响应和广播侦听器复制代码来推送,然后需要使用 toOthers?

(我知道无论哪种方式/这个例子都没什么大不了的。 不过,在处理更复杂的响应处理和许多不同的侦听器时,这似乎很重要。

使用toOther 意味着对当前用户的数据使用量更少,响应速度更快。例如,如果您的广播任务已排队并且队列已备份,则当前用户仍将立即看到更改。

最新更新