我阅读了有关Events
和Notifications
的laravel文档,似乎我们可以触发一个事件,并从该事件(使用ShouldBroadcast
接口)广播到laravel echo,我理解,另一方面,我们可以使用通知viaBroadcast
来做同样的事情,那么有什么不同呢?
答案 0 :(得分:47)
所提供的答案缺少的是,他们在大多数情况下都使用而不是1或者其他,这似乎是提供的答案/问题的基调。
事件在您的应用程序中具有重要意义。让我们假设您的应用程序是一个网上商店。
您的网上商店中的重要操作可以是产品购买。购买产品时,您需要执行许多不同的步骤。把这一切都放在一个控制器内,可能放在几个不同的地方可能会变得非常混乱而且不清楚。
一个好的方法是使用名为 ProductPurchased 的事件。此事件可以有监听器,在这种情况下,这些监听器是用户购买产品时需要执行的所有步骤。
例如为: ProductPurchased(事件)
我们希望我们在购买产品时通过短信和电子邮件通知我们的客户。
因此,在notifyClient事件监听器上,我们可以创建通知。此通知负责向客户端发送消息。这可以是SMS / Slack-message / Email / ...
就像你提到的那样,事件和通知都可以放在队列中或者可以进行广播。
答案 1 :(得分:19)
经过深思熟虑,我发现它们是为不同的东西而制造的,这就是我所理解的:
通知:强>
考虑一下facebook,每次登录时都会看到一堆关于你在哪里发生的事情的通知,如果你在场,你会看到实时通知..
同时您收到有关您想要的通知的电子邮件。
这正是Laravel Notifications正在做的事情。
你可以在notify
等雄辩的模型上使用App\User
方法,例如OrderApproved
,它会做你计划为你做的任何事情,就像发送短信给那个用户一样。并且您还可以在数据库中保存该通知的一个瞬间,以便当用户回来时他或她可以看到您已经批准了他们的订单..
<强>活动:强>
当事情发生时,就像创建新用户并且你想做不同的事情一样,例如发送验证邮件,发送验证短信和..这就是为什么你创建一个事件以便你可以处理不同的事情使用侦听器的该事件的逻辑。 在广播方面,您可以在活动中使用ShouldBroadcast
界面,然后您可以通过管理面板同步新用户注册的数据。当管理员正在观看用户列表并且无需重新加载页面时,这将非常有用,您可以在管理面板上使用Laravel Echo
来接收该事件,并将新注册用户附加到列表中。
<强>结论:强>
这实际上取决于你需要什么,如果你只是想在界面中更新某些东西,那么事件就是你所需要的。但如果你需要做更多,你可以使用通知。
在最终事件被用于需要在发生事情时执行操作,而通知报告刚刚发生的事情。
希望它能帮助别人..