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