2016-09-04 112 views
13

我讀了關於EventsNotifications的laravel文檔,看來我們可以觸發一個事件,並從那個事件(使用ShouldBroadcast接口)將它廣播到laravel回聲,我瞭解另一方面,我們可以使用通知viaBroadcast做同樣的,那有什麼區別?Laravel Broadcasting:Notification vs Event

回答

14

思索了一番之後,我發現他們是不同的事情做,這是我理解的:

聲明:

考慮臉譜,每次你登錄你看到一堆的事情的通知這發生在你離開的地方,如果你在場,你也看到了直播通知..

與此同時,你正在收到關於你想要的通知的電子郵件.. 這正是Laravel Notifications所做的。 你可以在你口若懸河的模型使用notify方法,例如App\User約像OrderApproved這將做任何你計劃好了要爲你做喜歡發送短信給該用戶。 ,你也可以這樣當用戶回來,他或她可以看到你已經批准他們的訂單保存在數據庫中的通知的一剎那..

活動:

當事情發生時,比如當它新用戶被創建,你想做不同的事情,如發送驗證電子郵件,發送驗證短信和..這就是爲什麼你創建一個事件,以便您可以使用監聽器處理該事件的不同邏輯。 當涉及到廣播時,您可以在您的活動中使用ShouldBroadcast界面,並從那裏您可以與管理面板同步數據,以註冊新用戶。當管理員正在監視用戶列表並且不重新加載可以用戶Laravel Echo在管理面板上接收該事件並將新註冊用戶附加到列表的頁面時,這將是有用的。

結論:

這真的取決於你所需要的,如果你只是想更新你的界面的東西,也許事件是你所需要的。但是如果你需要做更多的事情,你可以使用通知。

到底事件

當你需要做的事情,當有事情發生,同時通知是剛剛發生的事報告中使用。

希望它能幫助別人..

+0

其實你可以用事件監聽自己的通報機制,但Laravel提供開箱即用解決方案來跟蹤你的活動,特別是如果你使用數據庫通知,因爲你不需要知道如何laravel篩選通知數據,laravel爲你提供所有的東西。即使是鬆懈,nexmo,郵件,廣播,你可以手動觸發事件,但通知包裝所有這一切,使更容易實施。 –

19

什麼提供答案缺乏國際海事組織是他們在大多數情況下使用這兩種替代1或者其他,這似乎是所提供的答案/問題的基調。

事件是在應用程序中的東西顯著。假設你的應用程序是一個網上商店。

在你的網上商店的一個顯著動作可以購買的產品。購買產品時,您需要執行很多不同的步驟。把這一切全部放在控制器內部會變得非常混亂而且不清晰。

所以一個好的方法是使用事件稱爲產品購買。這個事件可以包含聽衆,這些聽衆在這種情況下是用戶購買產品時需要執行的所有步驟。

如: ProductPurchased(事件)

  • BillClient(事件偵聽)
  • GenerateInvoice(事件偵聽)
  • notifyClient(事件偵聽)
  • ...

比方說,我們希望在購買產品時通過短信和電子郵件通知我們的客戶。

因此,在notifyClient事件偵聽器上,我們可以創建一個通知。此通知負責向客戶端發送消息。這可能是一個短信/斯萊克消息/電子郵件/ ...

,像你提到的事件和通知可放入隊列,也可以播放。

+2

優秀的深度答案,應該有更多的投票! – Birdy

+0

我認爲原來的問題指的是而不是做'事件(新ProductPurchased)'和3個聽衆開火,爲什麼不使用'broadcastOn'方法ProductPurchased並沒有notifyClient聽者什麼。 – dailysleaze

+0

當然,但問題是他理解廣播。這是websocket的東西,它主要用於向用戶顯示應用程序內部的實時信息。雖然通知用於發送給用戶。聽衆只是在重要的行動後應該觸發的類。它不是eventlisteners或通知或廣播,他們可以做一切行動。他們服務於不同的目的。 – Christophvh