此文記錄一下之前項目中遇到的laravel后臺廣播消息到vue前臺的實現過程。Laravel 并未內置一個 Socket.IO 服務器實現,不過,這里有一個第三方實現的 Socket.IO 驅動:laravel-echo-server,相當于一個中間件;技術要點:laravel + laravel-echo-server + vue/laravel-echo
整體架構詳細介紹參見:https://github.com/tlaverdure...
1.1 laravel-echo-server服務器直接搭建在laravel項目中:① 全局安裝laravel-echo-server: npm install laravel-echo-server -g;
② 控制臺進入laravel項目,運行命令:laravel-echo-server init
在laravel項目中會多出一個laravel-echo-server.json文件,里面包含了所有的配置信息;
③ 通過運行laravel-echo-server start 命令行啟動服務
我們發現,其實只要有一個laravel-echo-server.json文件就能啟動服務,那么顯然可以將服務獨立出laravel項目進行部署(覺得沒必要可以不用這么折騰)。
使用Http的方式推送消息至laravel-echo-server服務器,格式如下:
POST http://app.dev:6001/apps/your-appId/events?auth_key=you-key
用postman測試:
測試成功,laravel-echo-server服務器搭建成功
2. laravel后臺定義BroadcastHttpPush.php作為接口
?phpnamespace App/HelpTrait;use GuzzleHttp/Client;trait BroadcastHttpPush html' target='_blank'>public function push($data) $baseUrl = env( WEBSOCKET_BASEURL , http://localhost:6001/ $appId = env( WEBSOCKET_APPID , 3ccfbd93b5e2906a $key = env( WEBSOCKET_KEY , 6509c546c053d59057a61e46ae9a7898 $httpUrl = $baseUrl . apps/ . $appId . /events?auth_key= . $key; $client = new Client([ base_uri = $httpUrl, timeout = 2.0, $response = $client- post($httpUrl, [ json = $data $code = $response- getStatusCode();}
使用:
?phpnamespace App/Controllers;use App/HelpTrait/BroadcastHttpPush;class SendMessage use BroadcastHttpPush; public function index() $broadcastChannel = array( channel = private-Message , // 通道名,`private-`表示私有 name = sayHello , // 事件名 data = array( status = 200, message = hello world! $this- push($broadcastChannel);}3. vue前端
定義UserActionNotification.vue
template /template script import Echo from laravel-echo import io from socket.io-client export default { mounted() { window.io = io window.Echo = new Echo({ broadcaster: socket.io , host: http://localhost:6001 , window.Echo.private( Message ).listen( .sayHello , (res) = { if (res.status === 200) { console.log(res.message) } else { console.log( something wrong! ) /script style lang= sass scoped
注:事件sayHello前面要加., 不然需要帶上事件的域名空間;
相關推薦:
Laravel如何操作數據庫?Laravel數據庫操作的三種方式(代碼)
Laravel 5.5如何創建響應?創建響應的介紹(代碼)
以上就是如何使用laravel-echo-server 搭建一個事件廣播平臺的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答