久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      詳解Laravel-echo-server怎么搭建實(shí)時(shí)應(yīng)用

      下面由Laravel教程欄目給大家介紹一下使用 Laravel-echo-server 構(gòu)建實(shí)時(shí)應(yīng)用的方法,希望對(duì)大家有所幫助!

      詳解Laravel-echo-server怎么搭建實(shí)時(shí)應(yīng)用

      在我看來(lái),實(shí)時(shí)通信才是 APP 應(yīng)用的將來(lái)。 Socket 服務(wù)通常不是那么容易實(shí)現(xiàn),但是 Laravel Echo 服務(wù)改變了這個(gè)情況。

      在本文中,我將會(huì)簡(jiǎn)要的介紹如何建立一個(gè)可以運(yùn)行的 Socket 服務(wù)并且在這個(gè)服務(wù)上進(jìn)行事件的廣播。(https://github.com/tlaverdure/laravel-echo-server, Laravel 的支持文檔: https://learnku.com/docs/laravel/5.6/broadcasting#driver-prerequisites)

      它是完全免費(fèi)的,你只要運(yùn)行你自己的 Socket 服務(wù)。你也可以使用 Laravel 默認(rèn)集成的 Pusher ,唯一的缺點(diǎn)是它是有限制的,如果超出限制則需要付費(fèi)。我更喜歡自己來(lái)架構(gòu)這些東西。

      要求:

      • Laravel 框架 (本教程使用了 5.6 版本)
      • Redis 服務(wù)
      • 基本的 Laravel 知識(shí)

      安裝 laravel-echo-server

      首先我們需要全局安裝 laravel-echo-server ,你只需在終端輸入下面的命令。

       $ npm install -g laravel-echo-server

      安裝完成后,打開(kāi)你的 Laravel 應(yīng)用,或者新啟一個(gè)測(cè)試項(xiàng)目:

       $ composer create-project --prefer-dist laravel/laravel echo-test

      接下來(lái)為我們的應(yīng)用安裝 Predis :

       $ composer require predis/predis

      安裝完成后,切換到項(xiàng)目根目錄下,初始化 Socket 服務(wù):

       $ laravel-echo-server init

      執(zhí)行這條命令后,會(huì)詢(xún)問(wèn)你一些關(guān)于 Socket 服務(wù)的配置信息,你可以根據(jù)自己的情況填寫(xiě):

      詳解Laravel-echo-server怎么搭建實(shí)時(shí)應(yīng)用

      切記在生產(chǎn)環(huán)境中,無(wú)論你什么時(shí)候使用它,都應(yīng)該關(guān)掉你的開(kāi)發(fā)者模式。

      我們可以嘗試啟動(dòng)服務(wù),看看它是否正常運(yùn)行:

      $ laravel-echo-server start

      輸出結(jié)果看起來(lái)像這樣:

      詳解Laravel-echo-server怎么搭建實(shí)時(shí)應(yīng)用

      配置 Laravel 使 Laravel Echo Server 正常工作

      打開(kāi)你的 config/app.php 文件并且取消 BroadcastServiceProvider 在這個(gè) Providers 數(shù)組中的注釋?zhuān)?/p>

      AppProvidersBroadcastServiceProvider::class,

      這個(gè) Provider 將會(huì)啟動(dòng)廣播路由(你或許已經(jīng)在 routes/channels.php 文件里面已經(jīng)看到了)

      打開(kāi) .env 文件,修改 BROADCAST_DRIVER 的值為你在 laravel-echo-server 初始化時(shí)定義的值(Redis 或者 Log)。在本教程中我們將使用 Redis 驅(qū)動(dòng)程序。
      同時(shí)修改 QUEUE_DRIVER 為你喜歡的任何隊(duì)列驅(qū)動(dòng)程序,在這個(gè)示例中你可以輕松的將其更改為 Redis 驅(qū)動(dòng)程序,因?yàn)槟阍谇懊嬉呀?jīng)安裝并且在運(yùn)行了。

      接下來(lái)我們必須安裝 Socket.io 客戶(hù)端和 Laravel-Echo 包,你可以通過(guò)以下操作來(lái)安裝:

      $ npm install --save socket.io-client $ npm install --save laravel-echo

      (在運(yùn)行這個(gè)之前你可能需要運(yùn)行 npm install 來(lái)安裝 Laravel 及相關(guān)依賴(lài))

      接下來(lái)打開(kāi) resources/assets/js/bootstrap.js 文件, 或者你自己的 引入所有 JS 基礎(chǔ)代碼的 JS 文件。

      現(xiàn)在我們要添加啟動(dòng) Echo 基礎(chǔ)服務(wù)的代碼:

      import Echo from 'laravel-echo'  window.io = require('socket.io-client'); window.Echo = new Echo({     broadcaster: 'socket.io',     host: window.location.hostname + ':6001' });

      現(xiàn)在我們準(zhǔn)備在頻道上監(jiān)聽(tīng)消息了!我會(huì)在本教程中解釋怎么開(kāi)放頻道,接下來(lái)開(kāi)始收聽(tīng)我們的第一個(gè)頻道:

      window.Echo.channel('test-event')     .listen('ExampleEvent', (e) => {         console.log(e);     });

      我們通過(guò) JS 代碼告訴程序我們訂閱了名為 ’test-event' 的頻道, 并監(jiān)聽(tīng) ‘ExampleEvent’ 事件 (這是事件的類(lèi)名,你也可以根據(jù)你的需要自定義)。

      讓我們創(chuàng)建這個(gè)事件類(lèi):

      $ php artisan make:event ExampleEvent

      這將會(huì)在 App/Events 目錄下面創(chuàng)建一個(gè)叫做 ExampleEvent.php 的事件類(lèi)
      讓我們對(duì)這個(gè)事件類(lèi)稍作調(diào)整使得它能夠在我們的 Socket 服務(wù) 中能夠正常運(yùn)行,首先確保你的事件類(lèi)繼承于 ShouldBroadcast 接口,就像下面這樣;

      class ExampleEvent implements ShouldBroadcast

      接下來(lái)向下滾動(dòng)找到 broadcastOn 函數(shù),修改它使得我們能夠在正確的頻道上進(jìn)行廣播:

      public function broadcastOn() {     return new Channel('test-event'); }

      讓我們?cè)谙旅嫘陆ㄒ粋€(gè)函數(shù),這樣我們才能有一些實(shí)例數(shù)據(jù):

      public function broadcastWith() {     return [         'data' => 'key'     ]; }

      這個(gè)函數(shù)在事件被調(diào)用時(shí)調(diào)用,它將會(huì)把數(shù)據(jù)返回到你的 Socket 服務(wù)中。

      現(xiàn)在讓我們開(kāi)始嘗試它吧!打開(kāi)你的 routes/web.php 文件并且新增一個(gè)測(cè)試路由:

      Route::get('test-broadcast', function(){     broadcast(new AppEventsExampleEvent); });

      (有很多種方式來(lái)廣播 ExampleEvent 類(lèi) ,在這個(gè)示例中我使用 Laravel 提供的 broadcast() 助手,在我看來(lái)這是最簡(jiǎn)潔的方式)

      啟動(dòng)隊(duì)列監(jiān)聽(tīng):

      $ php artisan queue:listen --tries=1

      瀏覽器打開(kāi)一個(gè)包含 JS 文件的頁(yè)面(可以是 Laravel 默認(rèn)的歡迎頁(yè)面),這是第一個(gè)頁(yè)面,請(qǐng)不要關(guān)閉次頁(yè)面,我們已經(jīng)在此頁(yè)面上訂閱了 Socket 服務(wù)。

      接下來(lái)打開(kāi)另一個(gè)頁(yè)面訪問(wèn) /test-broadcast ,這將會(huì)返回一個(gè)空白頁(yè)面,但是它將會(huì)通過(guò)你的 ExampleEvent 類(lèi)廣播到你的 Socket 服務(wù)上。返回到我們的第一個(gè)頁(yè)面,打開(kāi)瀏覽器控制臺(tái),應(yīng)該可以看到類(lèi)似信息:

      詳解Laravel-echo-server怎么搭建實(shí)時(shí)應(yīng)用

      正如你所看到的,數(shù)據(jù)通過(guò)這種形式展示在我們的客戶(hù)端。你能輸入任意數(shù)據(jù)通過(guò)你的 ExampleEvent 類(lèi)來(lái)廣播他們,這些數(shù)據(jù)可以是新聞更新,頁(yè)面更新,總瀏覽量或者

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)