亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

基于 Redis驅(qū)動的 Laravel 事件廣播

fantix / 1170人閱讀

摘要:一前言之前在項目中需要使用的事件廣播,而且項目打算使用作為驅(qū)動,但發(fā)現(xiàn)網(wǎng)上的資料大部分都是驅(qū)動的,只能自己摸索著搭建了一下服務。

一、前言

之前在項目中需要使用laravel的事件廣播,而且項目打算使用redis作為驅(qū)動,但發(fā)現(xiàn)網(wǎng)上的資料大部分都是Pusher驅(qū)動的,只能自己摸索著搭建了一下服務?,F(xiàn)在將這個過程記錄一下,希望能幫到其他人。

二、項目的環(huán)境

事件廣播需要用到redis,nodejs,不同的版本在安裝過程中會遇到一些問題,大家有興趣可以看看我之前提過的一個問題:npm install 報錯,下面是我開發(fā)時的環(huán)境:

laravel 5.3

node v6.11.4

redis 3.0.500

三、具體的搭建流程

其實大概的步驟在官方文檔上已經(jīng)給出來了,laravel5.3 官方文檔 廣播系統(tǒng),這里我就不講了,只把整體的流程寫下來~

3.1 在config/app.config中取消AppProvidersBroadcastServiceProvider::class的注釋 3.2 安裝Predis擴展
composer require predis/predis;
3.3 安裝laravel-echo-server
npm install -g laravel-echo-server
然后需要將此服務初始化,
laravel-echo-server init

然后按照指引一步一步初始化就好

3.4 將laravel-echo-server 服務加入到resource/asset/app.js

import Echo from "laravel-echo"
window.Echo = new Echo({
    broadcaster: "socket.io",
    host: window.location.hostname + ":6001" //一定不能用127.0.0.1(因為這個地方用127.0.0.1的時候,其他人訪問的時候會找自己的主機,而不是服務器的主機)
});
//這里放要監(jiān)控的頻道名,以及要進行的操作
window.Echo.channel("user1").listen("EventChanged", (e) => {
    console.log(e.name);//比如我要輸出傳過來的人名
 });
3.5 編譯app.js文件

由于app.js此時尚未進行編譯,所以需要編譯。編譯需要用到gulp,所以先安裝node的包

- npm install (會在根目錄下產(chǎn)生node_modules文件夾)
- npm install安裝過程中可能會遇到問題:
      安裝過程中如果遇到 deprecate gulp@3.9.1 ? vinyl-fs@0.3.14 ? glob-stream@3.1.18 ? minimatch@^2.0.1
      執(zhí)行 npm update -g minimatch@3.0.2npm update -g minimatch@3.0.2就可以
- 運行命令:gulp -watch或者npm run dev 將此js編譯,此時會報錯,can"t resolve laravel-echo,解決方法:npm install laravel-echo

到此為止,基本上laravel-echo-server 的服務基本上已經(jīng)搭好了,現(xiàn)在進行其他工作

3.6 創(chuàng)建要推送的事件,舉例TestEvent
3.6.1 生成事件
  php artisan make:event EventChanged    
3.6.2 廣播事件需要實現(xiàn)ShouldBrodcast接口
class EventChanged implements ShouldBroadcast

在broadcaston中定義要廣播到哪個頻道

   public function broadcastOn()
 {
   return new Channel("user1");//比如廣播到user1
 }

當一個事件被定義后,其所有public屬性都將被序列化,作為廣播的信息發(fā)送到指定頻道。
//在broadcastWith中自定義要將哪些信息廣播出去

 public function broadcastWith()
 {
   return ["name" => "jack"];
 }

在app/provider/BrodcastServiceProvider 的boot中設置廣播的頻道授權(quán)(return 為ture代表授權(quán)通過)

Broadcast::channel("user1", function () {
  return true; //這個里面可以寫授權(quán)的邏輯判斷,我這里直接返回true了,不做驗證
});

3.7 前端頁面js的引入

在你的前端頁面中引入編譯好的js文件,以及socket.io文件

//注意這兩個文件的引入順序


3.8 一些需要配置的配置項
3.8.1 整個環(huán)境還需要注意的一些配置項:

.env文件中的 broadcastdriver = redis // 因為使用redis驅(qū)動,所以要設置好

appconfigbroadcasting.php 中"default" => env("BROADCAST_DRIVER", "redis")

.env文件中的 QUEUE_DRIVER,這個代表了隊列的驅(qū)動方式,因為事件廣播將事件扔到默認隊列進行推送,所以這個地方有兩種設置方式(詳情參照laravel隊列的相關文檔):
1.QUEUE_DRIVER = sync //這個代表本地驅(qū)動,如果采用這個設置的話沒什么其他要操作的
2.QUEUE_DRIVER = database //這個代表采用數(shù)據(jù)庫驅(qū)動

3.8.2 如果采用database驅(qū)動隊列的話首先要運行

php artisan queue:table生成jobs表遷移

php artisan migrate 執(zhí)行遷移

運行隊列 php artisan queue:work

3.8.3 需要手動開啟的服務(均在項目的根目錄下執(zhí)行)

redis-server.exe (開啟redis服務,一定要啟動)

laravel-echo-server start (開啟socket服務)

四、總結(jié)
差不多上面就是所有的過程和步驟了,不知道有沒有很清楚。如果有可以幫到大家的地方,那就達到我寫這篇文章的目的了。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/28439.html

相關文章

  • Laravel 即時應用一種實現(xiàn)方式

    摘要:即時交互的應用在現(xiàn)代的應用中很多場景都需要運用到即時通訊,比如說最常見的支付回調(diào),與三方登錄。在生成事件時,已經(jīng)自動添加了該命名空間,該契約只約束方法。會將事件中的允許公開訪問的數(shù)據(jù)通過給定的頻道發(fā)布出去。 即時交互的應用 在現(xiàn)代的 Web 應用中很多場景都需要運用到即時通訊,比如說最常見的支付回調(diào),與三方登錄。這些業(yè)務場景都基本需要遵循以下流程: 客戶端觸發(fā)相關業(yè)務,并產(chǎn)生第三方應...

    NeverSayNever 評論0 收藏0
  • 基于Model Event模型事件Laravel實時APP

    摘要:重點是在頁面寫入新文本,頁面不能實時顯示。想要了解更多可以參考這篇文章基于驅(qū)動的事件廣播下測試實時功能刷新頁面,并觀察數(shù)據(jù)庫。測試實時創(chuàng)建功能。 說明:本文主要來源于real-time-apps-laravel-5-1-event-broadcasting 本文主要基于Laravel的Model Event介紹該框架的實時通信功能,Laravel模型的生命周期中包含事件:created...

    afishhhhh 評論0 收藏0
  • 簡單 16步走一遍 Laravel Echo 使用

    摘要:在國內(nèi),個人還是不推薦使用,訪問速度有所影響,而且其還是一個商業(yè)產(chǎn)品。今天利用最簡便的步,走一遍代碼集成和來使用。代碼簡單創(chuàng)建監(jiān)聽我們在后端添加一個被創(chuàng)建的事件,并繼承。 showImg(https://segmentfault.com/img/remote/1460000015801244?w=904&h=241); 先飚幾句英文,說說 Laravel Echo 的作用: One o...

    chavesgu 評論0 收藏0
  • Laravel5.1 事件廣播(Event Broadcasting)

    摘要:本文會用簡單的代碼展示一個事件廣播的過程。定義一個被廣播的事件根據(jù)文檔的說明,想讓事件被廣播,必須讓類實現(xiàn)一個接口,并且實現(xiàn)一個方法。返回一個數(shù)組,包含了事件發(fā)送到的頻道。觸發(fā)事件打開另一個頁面。 事件廣播 簡介 Laravel 5.1 之中新加入了事件廣播的功能,作用是把服務器中觸發(fā)的事件通過websocket服務通知客戶端,也就是瀏覽器,客戶端js根據(jù)接受到的事件,做出相應動作...

    yiliang 評論0 收藏0

發(fā)表評論

0條評論

fantix

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<