Laravel 5 Event Broadcasting(事件廣播)進階篇 – Pusher

上一篇:Laravel 5 Event 事件 談到如何使用 Laravel 的 Event(事件),接著我們就要實作比較深入的 Event 功能 – Broadcasting(廣播)

此篇教學會以兩種 Laravel 5.2 所提供的 broadcaster 來當作範例

  1. Pusher
  2. Redis (草稿)

Pusher – 大致上的架構圖

螢幕快照 2016-06-28 下午3.16.11

 

讓我們以使用者發送訊息的角度來看這個架構圖

1.使用者透過 Ajax 發送訊息給 Laravel 執行 Event (Server 發送訊息) 與新增到 Database

2.Laravel 使用 Event 將資料以Http送給Pusher

3.Client 以 socket 監聽 Pusher 設定的某個 channel 並以添加訊息

安裝環境:

  • Laravel 5.1+
      • Predis  – composer require predis/predis : “~1.1″
      • Pusher – pusher/pusher-php-server : “~2.4.1″

     

你可能會疑問為什麼 Laravel 官方文件寫 套件 Pusher 只需 ~2.0,但這邊建議 ~2.4.1

套件連結:
這是一個大雷,因為我在 Pusher 2.0 的環境測試了許久,但我的 Pusher 帳戶卻一直沒辦法順利取得訊息
接著就發現 2.0 只會傳給 Pusher us 這個預設 api url,因此套件若您是用 US 則會正常,但你若部署在 eu 或是 ap1 則會出現
Unknown auth_key , code:400 的錯誤,因為他在 us cluster 中找尋不到你的 key
注意此連結程式碼 150行 ~ 158行,就是針對 boardcasting pusher cluster 去設定不同的 host,但 2.0 不支援

2.0 的套件中 options 參數的 cluster 填寫 ap1 要影響 Push $host 這個參數
套件必須在 2.4.1 以後才有支援,否則你得在 broadcasting.php 中多設定 host 參數

.env

app\Http\routes.php

取得不同路徑的呈現方式

config\broadcasting.php

broadcasting.php 這邊先設置 pusher driver
別忘了將 default 調整成 pusher

app\Controllers\HomeController.php

程式第 14 ~ 19 行為根據 get 參數生成一個假的使用者,這裏若是未來要開發當然是可以傳入 Laravel 的 Auth User

第 20 行為觸發此事件。

app\Events\SendMessage.php

函式 broadcastWith() 將想帶入得值寫入,函式 broadcastOn() 將設置此事件的廣播頻道。

views\push.blade.php

程式 第 6 行為將 pusher 的函式庫以cdn的方式傳入,程式碼 33 行為設置監聽的頻道與叢集(cluster),第 38 行設置監聽頻道,第 40 行為監聽的 Event 名稱(此例為針對不同使用者應要會取得不同內容)

此篇範例原始碼:https://github.com/Maras0830/Laravel5-Event-Boardcasting

作者的話:redis 的方法將會在 下一篇與大家說明。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *