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);
});
如果创建任务的用户收到广播,它将在其列表中添加重复的任务。因此,在TaskController中使用了toOthers方法:
broadcast(new TaskCreated($task))->toOthers();
我已经在各种Laravel Echo教程/视频/文章中看到了类似的任务列表示例,它们都使用这种模式-但我不明白为什么。
给出这个例子,为什么我们不简单地从广播中与其他所有人一起仅从广播中更新当前用户的任务列表?
为什么我们要重复代码以从axios响应和广播侦听器中推送,然后又需要使用toOthers?
(我知道,使用本示例无论如何都没什么大不了。尽管在处理更复杂的响应处理和许多不同的侦听器时,这似乎很重要。)
答案 0 :(得分:0)
使用toOthers意味着更少的数据使用量和对当前用户的更快响应。例如,如果您的广播任务已排队并且已备份队列,则当前用户仍会立即看到更改。