Laravel Broadcasting:通知与事件

Pez*_*vak 24 php laravel

我读到laravel单证EventsNotifications,我们似乎可以触发一个事件并从该事件(使用ShouldBroadcast接口)广播给laravel回音我明白了,在另一方面,我们可以使用的通知viaBroadcast做同样的,所以有什么区别?

Chr*_*hvh 59

所提供的答案缺乏imo是在大多数情况下它们使用而不是1或其他,这似乎是所提供的答案/问题的基调.

事件在您的应用程序中具有重要意义.我们假设您的应用程序是一个网上商店.

您的网上商店中的重要操作可以是产品购买.购买产品时,您需要执行许多不同的步骤.把这一切都放在一个控制器内,可能放在几个不同的地方可能会变得非常混乱而且不清楚.

因此,一个好方法是使用名为ProductPurchased事件.此事件可以具有监听器,在这种情况下,这些监听器是用户购买产品时需要执行的所有步骤.

例如:ProductPurchased(事件)

  • BillClient(eventlistener)
  • GenerateInvoice(eventlistener)
  • notifyClient(eventlistener)
  • ...

假设我们想在购买产品时通过短信和电子邮件通知我们的客户.

所以在notifyClient事件监听器上我们可以创建一个Notification.此通知负责向客户端发送消息.这可以是SMS/Slack-message/Email/......

就像你提到的那样,事件和通知都可以放在队列中或者可以进行广播.

  • 优秀的深入答案应该已经被投票了更多! (2认同)
  • 我认为原始问题所指的不是执行 `event(new ProductPurchased)` 和触发 3 个侦听器,为什么不在 ProductPurchased 中使用 `broadcastOn` 方法并且没有 notifyClient 侦听器。 (2认同)
  • 你知道,我今天使用我的 gmail 注册了一个 stackoverflow 帐户,只是为了支持这个答案......我来这里是为了确定为什么使用 or,但我无法理解其中的区别......这个答案简洁而恰当......你利用一个事件来陈述“发生了一些重要的事情”,然后你利用监听器来触发那些发生的事情......我个人认为现在广播不再应该成为事件系统的一部分通知已启用,因为对我来说广播似乎应该是听众关注的问题!非常感谢@Christophvh (2认同)

Pez*_*vak 24

在经过深思熟虑之后,我发现它们是为不同的东西而制造的,这就是我所理解的:

声明:

考虑一下facebook,每次登录时都会看到一堆关于你在哪里发生的事情的通知,如果你在场,你会看到实时通知.

与此同时,您收到了有关您想要的通知的电子邮件......这正是Laravel Notifications正在做的事情.你可以notify在你雄辩的模型上使用方法,例如App\User关于OrderApproved你计划为你做什么的事情,比如向那个用户发送短信.并且您还可以在数据库中保存该通知的一个瞬间,以便当用户回来时他或她可以看到您已经批准了他们的订单.

事件:

当事情发生时,比如创建一个新用户并且你想做不同的事情,如发送验证电子邮件,发送验证短信和..这就是你创建一个事件的原因,这样你就可以使用监听器处理该事件的不同逻辑.在广播方面,您可以ShouldBroadcast在活动中使用界面,从那里您可以与管理面板同步数据,以便注册新用户.当管理员正在观看用户列表而没有重新加载页面时,这将非常有用,您可以Laravel Echo在管理面板上接收该事件,并将新注册的用户附加到列表中.

结论:

它真的取决于你需要什么,如果你只想更新你的界面中的东西,也许你需要的事件.但如果你需要做更多,你可以使用通知.

在事件发生的时候,当你需要做某些事情时,会使用最终事件.

希望它能帮到别人..