在現代Web應用開發中,即時交互場景愈來愈多,好比場景的就有:即時聊天,即時通知,第三方登陸,掃碼登陸等功能,都須要接入即時場景來完善。php
在過去,爲了實現這種即時通信,能讓客戶端正確響應處理結果,最爲經常使用的技術就是輪詢,由於 HTTP 協議的單向性,客戶端只能一遍一遍的主動詢問服務端的處理結果。這種方式有顯見的缺陷,佔用服務端資源不說,還不能實時得到服務端處理結果。laravel
如今,咱們可使用 WebSocket 協議來處理實時交互,它是一種雙向協議,容許服務端主動推送信息到客戶端。redis
本篇我將使用Laravel來進行構建一個即時的通知應用,須要運用到如下知識:npm
實現Laravel即時應用須要配合Laravel廣播事件系統來實現:https://laravel.com/docs/5.6/...app
首先須要恢復註釋的掉廣播服務提供者,在文件==config/app.php==中composer
Illuminate\Broadcasting\BroadcastServiceProvider::class
而後在.env文件中配置廣播系統的選項ide
BROADCAST_DRIVER=redis #這裏爲了演示方便,能夠按實際狀況配置 QUEUE_DRIVER=sync
而後須要按照redis包,上面的 廣播系統須要應用到這個。ui
composer require predis/predis
Redis的配置在==config/database.php==中spa
'redis' => [ 'client' => 'predis', 'default' => [ 'host' => env('REDIS_HOST', '127.0.0.1'), 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', 6379), 'database' => 0, ], 'cache' => [ 'host' => 'redis_cache_server_01', 'password' => null, 'port' => 6379, 'database' => 1, ], ],
首先咱們須要經過npm全局安裝laravel-
echo-servercode
npm install -g laravel-echo-server
而後開始對laravrl-echo-server進行初始化
laravel-echo-server init
下面會須要輸入一些配置,你能夠參照我下面這張截圖來進行設置.
PS:在實際生產環境中,切記關閉開發模式
下面咱們將laravel-echo-server運行起來.
laravel-echo-server start
正常的輸出將會是這個樣子(如圖),若有問題請詳細檢查你的配置.
作好以上準備後,就開始實戰進行消息推送與監聽.